Image Serving unterstützt eine unbegrenzte Verschachtelung von Image Serving-Anforderungen, das Einbetten von Image Rendering-Anforderungen sowie das Einbetten von Bildern, die von ausländischen Servern abgerufen werden. Diese Mechanismen werden nur von Ebenenbildern und Ebenenmasken unterstützt.
Bestimmte E-Mail-Clients und Proxy-Server können die geschweiften Klammern für die Verschachtelungs- und Einbettungssyntax kodieren. Bei Anwendungen, bei denen dies ein Problem darstellt, sollten Klammern anstelle geschweifte Klammern verwendet werden.
Eine gesamte Image Serving-Anfrage kann als Ebenenquelle verwendet werden, indem sie sie mithilfe der folgenden Syntax im Befehl src=
(oder mask=
) angibt:
…&src=is( nestedRequest)&…
Beim is
-Token wird zwischen Groß- und Kleinschreibung unterschieden.
Die verschachtelte Anforderung darf nicht den Serverstammpfad enthalten (normalerweise http:// *server*/is/image/'
).
Die verschachtelten Anforderungstrennzeichen ( '(',')'
) und die Befehlstrennzeichen ( '?'
, '&'
, '='
) in verschachtelten Anforderungen dürfen nicht HTTP-kodiert sein. Verschachtelte Anforderungen müssen genauso wie die äußere (Verschachtelungs-) Anforderung kodiert werden.
Vorverarbeitungsregeln werden auf verschachtelte Anforderungen angewendet.
Die folgenden Befehle werden ignoriert, wenn sie in verschachtelten Anforderungen angegeben werden (entweder in der Anforderungs-URL oder in catalog::Modifier
oder catalog::PostModifier
):
fmt=
qlt=
iccEmbed=
printRes=
quantize=
req=
bgc=
Wenn das Ergebnisbild der verschachtelten Anforderungen Maskendaten (Alpha) enthält, wird es als Ebenenmaske an die Einbettungsebene übergeben.
Außerdem werden attribute::MaxPix
und attribute::DefaultPix
des Bildkatalogs ignoriert, der für die verschachtelte Anforderung gilt.
Das Bildergebnis einer verschachtelten IS-Anforderung kann optional zwischengespeichert werden, indem cache=on
hinzugefügt wird. Standardmäßig ist die Zwischenspeicherung von Zwischendaten deaktiviert. Die Zwischenspeicherung sollte nur aktiviert werden, wenn erwartet wird, dass das Zwischenbild innerhalb eines angemessenen Zeitraums in einer anderen Anforderung wiederverwendet wird. Es gilt die standardmäßige serverseitige Cacheverwaltung. Die Daten werden verlustfrei zwischengespeichert.
Wenn die Dynamic Media-Bildwiedergabe auf dem Server aktiviert ist, können Renderanforderungen als Ebenenquellen verwendet werden, indem sie sie im Befehl src= (oder mask=) angeben. Verwenden Sie die folgende Syntax:
…&src=ir( *renderRequest*)&…
Beim ir
-Token wird zwischen Groß- und Kleinschreibung unterschieden.
renderRequest ist die übliche Image Rendering-Anforderung, mit Ausnahme des HTTP-Stammpfads http:// *server*/ir/render/
.
Die verschachtelten Anforderungstrennzeichen ( '(',')'
) und die Befehlstrennzeichen ( '?'
, '&'
, '='
) in verschachtelten Anforderungen dürfen nicht HTTP-kodiert sein. Eingebettete Anforderungen müssen genauso kodiert sein wie die äußere (Einbettungs-) Anforderung.
Die folgenden Image Rendering-Befehle werden ignoriert, wenn sie in verschachtelten Anforderungen angegeben werden:
fmt=
qlt=
icc=
iccEmbed=
printRes=
req=
Außerdem werden attribute::MaxPix
und attribute::DefaultPix
des Materialkatalogs ignoriert, der für die verschachtelte Renderanforderung gilt.
Das Bildergebnis einer verschachtelten IR-Anfrage kann optional zwischengespeichert werden, indem cache=on
eingeschlossen wird. Standardmäßig ist die Zwischenspeicherung von Zwischendaten deaktiviert. Die Zwischenspeicherung sollte nur aktiviert werden, wenn erwartet wird, dass das Zwischenbild innerhalb eines angemessenen Zeitraums in einer anderen Anforderung wiederverwendet wird. Es gilt die standardmäßige serverseitige Cacheverwaltung. Die Daten werden verlustfrei zwischengespeichert.
Wenn der FXG-Grafik-Renderer (auch AGMServer) mit Image Serving installiert und aktiviert ist, können FXG-Anforderungen als Ebenenquellen verwendet werden, indem sie sie in src=
(oder mask=
)-Befehlen angeben. Verwenden Sie die folgende Syntax:
…&src=fxg( renderRequest)&…
Beim fxg
-Token wird zwischen Groß- und Kleinschreibung unterschieden.
Das Rendering von FXG-Grafiken ist nur in der von Dynamic Media gehosteten Umgebung verfügbar und erfordert möglicherweise zusätzliche Lizenzen. Weitere Informationen erhalten Sie vom technischen Support von Dynamic Media.
renderRequest ist die übliche FXG-Renderanforderung, mit Ausnahme des HTTP-Stammpfads http:// *server*/agm/render/
.
Die Trennzeichen ( '(',')'
) und die Befehlstrennzeichen ( '?'
, '&'
, '='
) in verschachtelten Anforderungen dürfen nicht HTTP-kodiert sein. Eingebettete Anforderungen müssen genauso kodiert sein wie die äußere (Einbettungs-) Anforderung.
Die folgenden FXG-Befehle werden ignoriert, wenn sie in verschachtelten Anforderungen angegeben werden:
fmt=
qlt=
icc=
iccEmbed=
cache=
Image Serving unterstützt den Zugriff auf Quellbilder auf ausländischen HTTP-Servern.
Für Remote-URLs wird nur das HTTP-Protokoll unterstützt.
Um eine ausländische URL für einen src=
- oder mask=
-Befehl anzugeben, trennen Sie die ausländische URL oder das URL-Fragment mit Klammern:
…&src=( foreignUrl)&…
Wichtig: Die Trennzeichen ( '(',')'
) und die Befehlstrennzeichen ( '?'
, '&'
, '='
) in verschachtelten Anforderungen dürfen nicht HTTP-kodiert sein. Eingebettete Anforderungen müssen genauso kodiert sein wie die äußere (Einbettungs-) Anforderung.
Vollständige absolute URLs (wenn attribute::AllowDirectUrls
festgelegt ist) und URLs relativ zu attribute::RootUrl
sind zulässig. Ein Fehler tritt auf, wenn eine absolute URL eingebettet und das Attribut: AllowDirectUrls
ist 0, oder wenn eine relative URL angegeben und attribute::RootUrl
leer ist.
Auch wenn ausländische URLs nicht direkt in der Pfadkomponente der Anfrage-URL angegeben werden können, ist es möglich, eine Vorverarbeitungsregel einzurichten, um die Konvertierung relativer Pfade zu absoluten URLs zu ermöglichen (siehe Beispiel unten).
Ausländische Bilder werden vom Server gemäß den in der HTTP-Antwort enthaltenen Zwischenspeicherkopfzeilen zwischengespeichert. Wenn weder ein ETag
noch ein HTTP-Antwort-Header mit Last-Modified vorhanden ist, wird die Antwort nicht zwischengespeichert. Dies kann zu einer schlechten Leistung bei wiederholten Zugriffen auf dasselbe fremde Bild führen, da die Bildbearbeitung das Bild bei jedem Zugriff neu abrufen und überprüfen muss.
Dieser Mechanismus unterstützt dieselben Bilddateiformate, die vom Dienstprogramm Image Convert (IC) unterstützt werden, mit Ausnahme von Quellbildern mit 16 Bit pro Komponente.
Image Serving führt das Überprüfungsdienstprogramm automatisch aus, wenn ein externes Bild zum ersten Mal verwendet wird, um sicherzustellen, dass das Bild gültig ist und während der Übertragung nicht beschädigt wurde. Dies kann zu einer leichten Verzögerung beim ersten Zugriff führen. Für eine optimale Leistung wird empfohlen, die Größe solcher Bilder zu begrenzen und/oder ein Bilddateiformat zu verwenden, das gut komprimiert ist.
Die Größe des von verschachtelten/eingebetteten Anforderungen generierten Bildes wird normalerweise automatisch optimiert. Wenn die Zwischenspeicherung verschachtelter Anfragebilder aktiviert ist, können durch Angabe der exakten Größe des verschachtelten Bildes inkrementelle Leistungssteigerungen erzielt werden, sodass bei der Wiederverwendung des Cache-Eintrags keine weitere Skalierung erforderlich ist.
"Wichtiges Image Serving"unterstützt keine doppelte Kodierung verschachtelter oder eingebetteter Anforderungen. Verschachtelte und eingebettete Anforderungen müssen wie einfache Anforderungen HTTP-kodiert sein.
Ebenenvorlage mit Zwischenspeicherung:
Verwenden Sie die Verschachtelung, um die Zwischenspeicherung zu einer Ebenenvorlage hinzuzufügen. Eine begrenzte Anzahl von Hintergrundbildern wird mit stark variablem Text überlagert. Die anfängliche Vorlagenzeichenfolge könnte wie folgt aussehen:
layer=0&src=$img$&size=300,300&layer=1&text=$txt$
Bei geringfügigen Änderungen können wir das Bild der Ebene 0 vorskalieren und dauerhaft zwischenspeichern, wodurch die Serverlast reduziert wird:
layer=0&src=is(?src=$img$&size=300,300&cache=on)&layer=1&text=$txt$
Einbetten von Anforderungen für Dynamic Media Image Rendering
Verwendung einer Vorlage, die in myCatalog/myTemplate gespeichert ist; Generieren Sie das Bild für Layer2 der Vorlage mithilfe des Dynamic Media Image Rendering:
http://server/is/image/myCatalog/myTemplate?layer=2&src=ir(myRenderCatalog/myRenderObject?id=myIdValue&sel=group&src=is(myCatalog/myTexture1?res=30)&res=30)&wid=300
Beachten Sie die geschachtelten geschachtelten geschweiften Klammern. Die Image Rendering-Anfrage bettet einen Aufruf zurück an Image Serving ein, um eine wiederholbare Textur abzurufen.
src= , mask=, Request PreProcessing, Image Rendering Reference, Templates, Image Serving Utilities