Antworten auf häufig zu „at.js“ gestellten Fragen
Obwohl at.js mbox.js ersetzt, wird mbox.js weiterhin unterstützt. Für die meisten Benutzer birgt at.js allerdings mehr Vorteile als mbox.js.
Neben anderen Vorteilen sorgt at.js für kürzere Ladezeiten von Seiten bei Webimplementierungen, bessere Sicherheit und bessere Implementierungsoptionen für Einzelseiten-Apps.
Im folgenden Diagramm wird die Seitenladeleistung von mbox.js und at.js verglichen.
Wie oben gezeigt werden Seiteninhalte bei der Verwendung von mbox.js erst geladen, wenn der Aufruf von Target abgeschlossen wurde. Bei der Verwendung von at.js werden Seiteninhalte schon geladen, wenn der Aufruf von Target eingeleitet wird, nicht erst nach Abschluss des Vorgangs.
Viele Kunden und Berater möchten wissen, wie sich at.js und mbox.js auf die Seitenladezeit auswirken, insbesondere beim Vergleich neuer Besucher mit zurückkehrenden Besuchern. Leider ist es schwierig, zu messen, wie sich at.js oder mbox.js auf die Seitenladezeit auswirken und genaue Zahlen dazu zu nennen. Das liegt an den Implementationen der einzelnen Kunden.
Wenn die Besucher-API jedoch auf der Seite vorhanden ist, ermöglicht uns das ein besseres Verständnis darüber, wie sich at.js und mbox.js auf die Seitenladezeit auswirken.
Die Besucher-API und at.js oder mbox.js wirken sich nur dann auf die Seitenladezeit aus, wenn Sie die globale Mbox verwenden (das liegt an der Technik, mit der der Haupttext ausgeblendet wird). Regionale Mboxes sind von der Besucher-API-Integration nicht betroffen.
In den folgenden Abschnitten wird die Aktionssequenz für neue und zurückkehrende Besucher beschrieben:
Die Besucher-API ist geladen und analysiert und wird ausgeführt.
at.js/mbox.js ist geladen und analysiert und wird ausgeführt.
Wenn die automatische Erstellung der globalen Mbox aktiviert ist, wird die Target JavaScript-Bibliothek Folgendes tun:
Die Besucher-API ist geladen und analysiert und wird ausgeführt.
at.js/mbox.js ist geladen und analysiert und wird ausgeführt.
Wenn die automatische Erstellung der globalen Mbox aktiviert ist, wird die Target JavaScript-Bibliothek Folgendes tun:
Wenn die Besucher-API vorhanden ist, muss Target bei neuen Besuchern mehrfach über die Verbindung gehen, um sicherzustellen, dass Target-Anfragen die Daten der Experience Cloud-Besucher-ID enthalten. Bei zurückkehrenden Besuchern geht Target nur über die Verbindung, um den personalisierten Inhalt in Target abzurufen.
Bei at.js der Version 1.0.0 und höher werden alle Anforderungen parallel ausgelöst. In den vorherigen Versionen werden die Anforderungen sequenziell ausgeführt, d. h., die Anforderungen werden in eine Warteschlange verschoben, und Target wartet auf den Abschluss der ersten Anforderung, bevor der Vorgang mit der nächsten Anforderung fortgesetzt wird.
Die Art der Ausführung von Anforderungen in früheren Versionen von at.js unterliegt dem sogenannten „Head of Line Blocking“. In at.js 1.0.0 und höher ist Target zu der parallelen Anforderungsausführung gewechselt.
Wenn Sie sich beispielsweise das Wasserfallmodell der Netzwerkregisterkarte für at.js 0.9.1 ansehen, werden Sie feststellen, dass die nächste Target-Anforderung erst gestartet wird, nachdem die vorherige fertiggestellt wurde. Bei at.js 1.0.0 und höher ist dies nicht der Fall. Dort beginnen alle Anforderungen im Grunde genommen zu derselben Zeit.
Aus Sicht der Antwortzeit kann dies mathematisch wie folgt betrachtet werden:
Wie Sie sehen, schließt at.js 1.0.0 die Anforderungen schneller ab. Zudem laufen at.js-Anforderungen asynchron, sodass Target das Rendern der Seiten nicht blockiert. Selbst wenn der Abschluss von Anforderungen mehrere Sekunden dauert, wird die gerenderte Seite angezeigt. Lediglich einige Teile der Seite bleiben leer, bis Target eine Antwort vom Target Edge erhält.
In at.js 1.0.0 kann die Target-Bibliothek asynchron geladen werden.
So laden Sie at.js asynchron:
Die empfohlene Vorgehensweise erfolgt über einen Tag-Manager wie Adobe Launch oder Adobe Dynamic Tag manager (DTM). Weitere Informationen finden Sie in der Lektion Hinzufügen Adobe Target des Lehrgangs Implementieren des Experience Cloud in Websites mit Start.
Sie können at.js auch asynchron laden, indem Sie dem Skript-Tag zum Laden von at.js das asynchrone Attribut hinzufügen. Sie sollten Folgendes verwenden:
<script src="<URL to at.js>" async></script>
Sie können at.js auch mithilfe dieses Codes asynchron laden:
var script = document.createElement('script');
script.async = true;
script.src = "<URL to at.js>";
document.head.appendChild(script);
Das asynchrone Laden von at.js eignet sich hervorragend, um zu verhindern, dass das Rendern des Browsers blockiert wird. Bei dieser Technik kann es jedoch zu Flackereffekten auf der Webseite kommen.
Sie können ein Flackern vermeiden, indem Sie ein vor-ausgeblendetes Snippet verwenden, das die Seite (oder bestimmte Teile) ausblendet und diese dann nach at.js einblendet und die globale Anfrage vollständig geladen hat. Der Ausschnitt muss vor dem Laden von at.js hinzugefügt werden.
Wenn Sie at.js über eine asynchrone Implementierung von Launch bereitstellen, stellen Sie sicher, dass Sie das Ausblenden des Codeausschnitts direkt auf Ihren Seiten vor dem Einbettungscode starten einfügen, wie im Abschnitt Hinzufügen der Zielgruppe Pre-Hiding Snippet von Implementieren des Experience Cloud in Websites mit Launch-Lernprogramm beschrieben.
Wenn Sie at.js über eine synchrone DTM-Implementierung bereitstellen, kann das vor-ausgeblendete Snippet über eine Seitenladeregel hinzugefügt werden, die oben auf der Seite ausgelöst wird.
Weitere Informationen finden Sie unter Verwaltung von Flackern mit „at.js“.
Adobe Experience Manager 6.2 mit FP-11577 (oder neuer) unterstützt jetzt at.js-Implementierungen mit der Adobe Target Cloud Services-Integration. Weitere Informationen finden Sie unter Feature Packs und Integrieren mit Adobe Target in der Dokumentation zu Adobe Experience Manager 6.2.
Mit Target wird das Flackern beim Laden von Seiten auf verschiedenen Wegen vermieden: Weitere Informationen finden Sie unter Verwaltung von Flackern mit „at.js“.
Die at.js-Datei hat beim Download eine Größe von etwa 109 KB. Da die meisten Server Dateien jedoch automatisch komprimieren, um die Dateigröße zu verringern, ist at.js bei Komprimierung (mit GZIP oder einer ähnlichen Anwendung) auf dem Server etwa 34 KB groß und wird in dieser Größe auch geladen, wenn Benutzer Ihre Webseite besuchen. Die Komprimierungseinstellungen des Servers, auf dem at.js installiert ist, bestimmen die tatsächliche Größe der Datei.
at.js-Implementierungen verwenden nur eine Bibliothek (at.js), während bei mbox.js-Implementierungen zwei Bibliotheken (mbox.js und target.js) zum Einsatz kommen. Es wäre also gerechter, at.js mit mbox.js und target.js
zu vergleichen. Beim Vergleich der komprimierten Größen der beiden Versionen ist ersichtlich, dass die at.js-Version 1.2 34 KB groß ist und die mbox.js-Version 63 eine Größe von 26,2 KB hat. ``
at.js ist deshalb größer, weil im Vergleich zu mbox.js deutlich mehr DOM-Parsing durchgeführt wird. Dies ist erforderlich, da at.js „Rohdaten“ in der JSON-Antwort erhält und diese zunächst verarbeiten muss. mbox.js verwendet document.write()
, das Parsing wird vom Browser übernommen.
Trotz der größeren Datei zeigen unsere Tests, dass Seiten mit at.js schneller geladen werden als Seiten mit mbox.js. Zudem bietet at.js eine höhere Sicherheit, da keine zusätzlichen dynamischen Dateien geladen werden und document.write
nicht benötigt wird.
at.js arbeitet derzeit mit Teilen von jQuery, deshalb wird Ihnen oben in at.js der MIT-Lizenzhinweis angezeigt. jQuery wird nicht ausgelöst und die Bibliothek übt keinen Einfluss auf die bereits auf Ihrer Seite eingebettete jQuery-Bibliothek aus, bei der es sich möglicherweise um eine andere Version handelt. Der jQuery-Code in at.js lässt sich nicht löschen.
Nein, ist die domänenübergreifende Einstellung auf „nur x“ festgelegt und sind Drittanbieter-Cookies in Safari deaktiviert, setzen sowohl mbox.js als auch at.js ein deaktiviertes Cookie und es werden für diese Kundendomäne keine Mbox-Abfragen ausgeführt.
Sollen Safari-Besucher unterstützt werden, wäre eine bessere X-Domäne „deaktiviert“ (setzt nur ein Erstanbieter-Cookie) oder „aktiviert“ (setzt in Safari nur ein Erstanbieter-Cookie, während in anderen Browsern Erst- und Drittanbieter-Cookies gesetzt werden).
Nicht auf derselben Seite. Während der Implementierung und dem Testen von at.js können Sie jedoch at.js auf einigen Seiten und mbox.js auf anderen Seiten ausführen, bis Sie at.js vollständig validiert haben.
Ja. Sie können VEC für Ihre SPA benutzen, wenn Sie at.js 2.x verwenden. Weitere Informationen finden Sie unter Visual Experience Composer (VEC) für Einzelseiten-Apps (SPAs).
Ja. Sie können außerdem mboxTrace für das Debugging oder die Entwicklerwerkzeuge Ihres Browsers verwenden und zum Isolieren von Mbox-Aufrufen nach „mbox“ filtern, um die Netzwerkanforderungen zu analysieren.
Ja, genau wie bei mbox.js.
Target-Kunden verwenden mitunter Cloud-basierte Instanzen mit Target zum Testen oder für einfache Machbarkeitsprüfungen. Diese Domänen sind neben vielen anderen Teil der öffentlichen Suffix-Liste.
Modere Browser speichern keine Cookies, wenn Sie diese Domänen verwenden - es sei denn, Sie passen die Einstellung cookieDomain
mit targetGlobalSettings() an. Weitere Informationen finden Sie unter Verwenden Cloud-basierter Instanzen mit Target.
Ja, wenn Sie at.js, Version 1.2 oder neuer verwenden. Es wird jedoch dringend empfohlen, immer die neueste Version zu verwenden.
Die folgenden Beispiele sind nicht notwendig, wenn Sie at.js der Version 1.2 oder neuer verwenden.
Abhängig davon, wie Sie targetGlobalSettings verwenden, müssen Sie möglicherweise weitere Änderungen am Code vornehmen, nachdem Sie at.js heruntergeladen haben. Benötigen Sie beispielsweise etwas voneinander abweichende Einstellungen für Ihre Implementierungen von Target auf verschiedenen Websites und konnten Sie diese Einstellungen nicht dynamisch mit JavaScript festlegen, nehmen Sie diese Anpassungen manuell vor, nachdem Sie die Datei heruntergeladen haben und bevor Sie sie auf der entsprechenden Website hochladen.
In den folgenden Beispielen können Sie die at.js-Funktion targetGlobalSettings()
zum Einfügen eines Code-Ausschnitts verwenden, um IP-Adressen zu unterstützen:
Dieses Beispiel betrifft eine einzelne IP-Adresse:
if (window.location.hostname === '123.456.78.9') {
window.targetGlobalSettings = window.targetGlobalSettings || {};
window.targetGlobalSettings.cookieDomain = window.location.hostname;
}
Dieses Beispiel betrifft einen IP-Adressbereich:
if (/^123\.456\.78\..*/g.test(window.location.hostname?lang=de)) {
window.targetGlobalSettings = window.targetGlobalSettings || {};
window.targetGlobalSettings.cookieDomain = window.location.hostname;
}
Diese Nachrichten stehen in keiner Verbindung zur at.js-Funktionalität. Die at.js-Bibliothek versucht, alles zu melden, das nicht im DOM zu finden ist.
Nachfolgend finden Sie mögliche Grundursachen für diesen Warnhinweis:
Die Seite wird dynamisch erstellt und at.js kann das Element nicht finden.
Die Seite wird langsam erstellt (aufgrund eines langsamen Netzwerks) und at.js kann den Selektor im DOM nicht finden.
Die Seitenstruktur, auf der diese Aktivität ausgeführt wird, wurde geändert. Wenn Sie die Aktivität erneut im Visual Experience Composer (VEC) öffnen, sollte Ihnen ein Warnhinweis angezeigt werden. Sie sollten die Aktivität aktualisieren, damit alle erforderlichen Elemente gefunden werden können.
Die zugrundeliegende Seite ist Teil einer Einzelseiten-App (SPA) oder die Seite enthält Elemente, die weiter unten auf der Seite auftauchen und der „Selektor-Polling-Mechanismus“ von at.js kann diese Elemente nicht finden. Es ist unter Umständen hilfreich, den selectorsPollingTimeout
zu erhöhen. Weitere Informationen finden Sie unter targetGlobalSettings().
Eine beliebige Klick-Tracking-Metrik versucht, sich zu jeder Seite hinzuzufügen, unabhängig von der URL, in der die Metrik eingerichtet wurde. Diese Situation ist zwar harmlos, hat aber viele dieser Warnhinweise zur Folge.
Um die bestmöglichen Ergebnisse zu erzielen, sollten Sie die aktuellste Version von at.js herunterladen und verwenden. Weitere Informationen finden Sie unter „at.js“-Versionsdetails und Herunterladen von „at.js“.
tt.omtrdc.net ist der Domainname für das EDGE-Netzwerk von Adobe, mit dem alle Server-Aufrufe für Target empfangen werden.
„HttpOnly“ kann nur über Server-seitigen Code festgelegt werden. Target-Cookies, wie z. B. Mbox, werden über JavaScript-Code erstellt und gespeichert. Target kann das Cookie-Flag „HttpOnly“ also nicht verwenden.
„Secure“ kann nur über JavaScript festgelegt werden, wenn die Seite mit HTTPS geladen wurde. Wenn die Seite nur mit HTTP geladen wird, kann JavaScript dieses Flag nicht festlegen. Darüber hinaus ist das Cookie bei der Verwendung des Flags „Secure“ nur auf HTTPS-Seiten verfügbar.
Damit Target Benutzer richtig verfolgen kann – und weil Cookies Client-seitig generiert werden –, verwendet Target keines dieser Flags.
Die gesamte Entscheidungsfindung von Adobe Target findet Server-seitig statt. Das bedeutet, dass at.js jedes Mal, wenn die Seite neu geladen oder eine öffentliche at.js-API aufgerufen wird, eine Netzwerkanfrage gesendet wird.
at.js vermeidet das Vorab-Ausblenden des HTML-Bodys oder anderer DOM-Elemente über einen längeren Zeitraum, dies ist jedoch von den Netzwerkbedingungen und der Aktivitätseinrichtung abhängig. at.js bietet Einstellungen, mit denen Sie den CSS-Style zum Ausblenden des Bodys anpassen können, um nicht den gesamten HTML-Body, sondern nur bestimmte Teile der Seite auszublenden. Hierbei wird erwartet, dass diese Teile DOM-Elemente enthalten, die „personalisiert“ werden müssen.
Bei der at.js-Anfrage handelt es sich um eine asynchrone XMLHttpRequest
, weshalb wir folgende Schritte ausführen:
Wie oft war der Seiteninhalt im oben aufgeführten Szenario vollständig geladen und sichtbar, wenn at.js das Element, das durch die Aktivität geändert wird, zum letzten Mal einblendet? Anders ausgedrückt: Die Seite ist vollständig sichtbar, ausgenommen der Aktivitätsinhalt, der kurz nach dem anderen Inhalt eingeblendet wird.
at.js blockiert nicht das Seiten-Rendering. Benutzer bemerken möglicherweise leere Bereiche auf der Seite, an denen sich die von Target angepassten Elemente befinden. Wenn der anzuwendende Inhalt nicht viele Remote-Assets, wie z. B. Skripte oder Bilder, enthält, wird alles schnell dargestellt.
Wenn eine Seite in einem CDN gespeichert ist, das sich nahe am Standort des Benutzers, aber nicht in der Nähe der Target-Edge befindet, erlebt dieser Benutzer möglicherweise Verzögerungen. Target-Edges sind jedoch über die ganze Welt verteilt, sodass dies in der Regel kein Problem darstellt.
Stellen Sie sich folgendes Szenario vor:
Das Target-Timeout beträgt fünf Sekunden. Ein Benutzer lädt eine Seite, die eine Aktivität zum Anpassen des Hero-Bilds aufweist. at.js sendet die Anfrage, um zu bestimmen, ob eine Aktivität angewendet werden muss, die erste Antwort bleibt jedoch aus. Wir können also davon ausgehen, dass der Benutzer den regulären Inhalt des Hero-Bilds sieht, da keine Antwort von Target zu etwaigen anzuwendenden Aktivitäten eingegangen ist. Nach vier Sekunden gibt Target eine Antwort mit den Aktivitätsinhalten zurück.
Ist es zu diesem Zeitpunkt möglich, dass die alternative Version angezeigt wird? Nach vier Sekunden könnte das Hero-Bild also ausgetauscht werden. Würde der Benutzer diesen Austausch bemerken?
Das Hero-DOM-Element ist zu Beginn ausgeblendet. Nachdem eine Antwort von Target eingeht, wendet at.js die DOM-Änderungen an, wie z. B. die IMG-Änderung und die Anzeige des angepassten Hero-Bilds.
at.js erfordert den Doctype HTML 5.
Diese Syntax lautet:
<!DOCTYPE html>
Der Doctype HTML 5 stellt sicher, dass die Seite im Standardmodus geladen wird. Beim Laden im Quirks-Modus sind einige JS-APIs, von denen at.js abhängig ist, deaktiviert. Target deaktiviert at.js im Quirks-Modus.