Funktionsweise der Optimize-Laufzeit

Informationen zu den Vorgängen im Browser des Besuchers und zum Anwenden von Änderungen

Wenn ein Nutzer Ihre Website besucht, finden jedes Mal drei Schritte statt, die im Folgenden behandelt werden.

Themen in diesem Artikel

Synchrone und asynchrone Downloads

Die synchrone Installation ist am einfachsten und bietet die höchste Leistung für Tests. Optimize kann jedoch auch asynchron laufen. Das hat den Vorteil, dass die normale Funktionsweise Ihrer Website nicht beeinträchtigt wird. Der Optimize-Container wird parallel zu weiteren Skripts und Ressourcen Ihrer Seite heruntergeladen und blockiert diese nicht. Andere Skripts, die zuerst heruntergeladen wurden, lassen sich ohne Verzögerung ausführen.

Normalerweise wird der Inhalt Ihrer Seite von Optimize geändert. Die Priorität ist also wichtig.

Daher empfehlen wir, die Optimize-Installation oben im <HEAD>-Abschnitt einzufügen. So kann die Anwendung so schnell wie möglich ausgeführt werden, ohne von anderen Skripts und Bibliotheken Ihrer Seite blockiert zu werden.

Die falsche Positionierung von Optimize kann zu Seitenflackern, einem längeren Ausblendungszeitraum und Container-Timeouts führen, wenn Sie das Snippet gegen Seitenflackern verwenden.

Snippet gegen Seitenflackern

Wenn eine HTML-Seite durch JavaScript-Code geändert wird, flackert sie häufig: Besucher können vorübergehend die ursprüngliche Version der Seite sehen, bevor sie geändert wird.

Bei einem Tool wie Optimize könnte das die Besucher verwirren. Vielleicht erkennen sie sogar, dass ein Test läuft. Das kann sich negativ auf Ihre Website und die Testergebnisse auswirken. Aus diesem Grund gibt es bei Optimize verschiedene Mechanismen, um das Flackern zu vermeiden.

Eine wichtige Rolle spielt dabei das Snippet gegen Seitenflackern, das aufgrund der asynchronen Natur von Optimize erforderlich ist.

Bei einem synchronen Skript werden das Parsing und die Anzeige der Seite im Browser blockiert. Es kann sogar passieren, dass die Website gar nicht mehr funktioniert. Ein asynchrones Skript kann jederzeit ausgeführt werden, auch wenn die Seite schon komplett geladen wurde. Dabei droht auch kein Totalausfall (z. B. kein Laden der Website), allerdings kann es durch ein asynchrones Skript zu einem Flackern kommen.

Das Snippet gegen Seitenflackern sorgt dafür, dass Ihre Webseite vorübergehend ausgeblendet wird, damit ausreichend Zeit zum Herunterladen des Optimize-Containers bleibt. Bei korrekter Installation auf einer normalen Seite hat das Snippet gegen Seitenflackern keine Auswirkungen auf die Leistung, da der Optimize-Container parallel mit anderen Skripts und Ressourcen der Seite heruntergeladen wird, die das Rendern blockieren könnten.

Aber das Snippet ist nicht der einzige Mechanismus, mit dem das Flackern verhindert wird. Es verschwindet nämlich normalerweise, bevor die Seite tatsächlich im Browser zur Verfügung steht, um durch Optimize geändert zu werden.

Hinweis: Eine Zeitüberschreitung beim Snippet gegen Seitenflackern ist das Worst-Case-Szenario. Sie entspricht nicht der tatsächlichen Verzögerung. Außerdem bezieht sich der empfohlene Wert für die Zeitüberschreitung nicht auf die Website- oder Optimize-Leistung, sondern hauptsächlich auf die Netzwerkgeschwindigkeit der Besucher, falls z. B. die Signalstärke schlecht ist oder ein anderes Problem vorliegt.

Wenn der Optimize-Container und andere Seitenressourcen nicht heruntergeladen und auf dem Gerät des Besuchers ausgeführt wurden, bevor der Wert der Zeitüberschreitung erreicht ist, wird die Seite nicht mehr ausgeblendet. Außerdem werden alle Optimize-Tests, die später angewendet werden könnten, beendet und der Besuch wird aus dem Test-Traffic ausgeschlossen.

Sobald der Optimize-Container heruntergeladen wurde, wird das globale Ausblenden der Seite beendet. Die Testregeln werden vom Container ausgewertet und es bleiben nur die Elemente ausgeblendet, die an den ausgewählten Testvarianten beteiligt sind. Dieser Fall kann auch eintreten, wenn diese Elemente noch nicht auf der Seite zu sehen sind.

Page-hiding-snippet-flow-diagram

Ausrichtungsregel auswerten

Sobald der Optimize-Container heruntergeladen wurde, werden die Ausrichtungsregeln aller Tests ausgewertet, die für die standardmäßige Aktivierung durch Seitenaufbau konfiguriert wurden. Bei Tests, bei denen keine standardmäßige Aktivierung konfiguriert wurde, wird auf Aktivierungsereignisse gewartet.

Hinweis: Die Testmodellseite, über die Sie den Optimize-Editor starten können, ist nicht für die Ausrichtung relevant, obwohl sie ursprünglich als Standard-Ausrichtungsregel zugewiesen wurde. Auf der Seite "Testdetails" können Sie auf dem Ausrichtungs-Tab genau sehen, welche Regeln für einen Test gelten.

Nutzer werden beim ersten Besuch einer Seite nach einem Teststart (Es muss nicht der erste Besuch überhaupt sein.) einer Variante zugewiesen. Die Zuweisung erfolgt nach dem Zufallsprinzip basierend auf der Google Analytics-Client-ID und den Variantengewichtungen. Die Variante bleibt bis zum Ende des Tests zugewiesen und Aktionen, die später erfolgen (also Ziele), werden dieser Variante zugeordnet.

Die Variantenzuweisung wird in einem eigenen Cookie (_gaexp) gespeichert und bei zukünftigen Aufrufen desselben Besuchers verwendet, um einen einheitlichen Gesamteindruck zu gewährleisten. Das bedeutet nicht zwangsläufig, dass der Besucher die Variante bei den folgenden Aufrufen sieht. Die Regeln werden jedes Mal neu bewertet. Wenn sie aber übereinstimmen, wird dem Nutzer dieselbe Variante angezeigt. Conversions auf dieser oder auf einer anderen Seite werden der Variante allerdings unabhängig von den Regeln zugeordnet.

Wenn auf einer beliebigen Seite mehrere Tests gleichzeitig laufen, werden diese Zuweisungen des Nutzers mit demselben Cookie verknüpft. Aufgrund von Browserbeschränkungen für die Größe von Cookies gibt es eine maximale Anzahl gleichzeitiger Tests pro Nutzer. Überschreitet das Cookie eines Besuchers diese Grenze, wird er vom Test-Traffic ausgeschlossen und es werden keine Varianten zusätzlicher Tests angezeigt. Nach dem Ende eines Tests werden die Variantenzuweisungen bereinigt und der Besucher kann weiteren Tests hinzugefügt werden.

Sobald ein Besucher einem Test zugewiesen wurde, sorgt die Laufzeit dafür, dass die erforderlichen Varianteninformationen von Google Analytics erfasst werden. Bei Tests mit der standardmäßigen Aktivierung durch Seitenaufbau und nicht mit der benutzerdefinierten Aktivierung erfolgt die Variantenzuweisung vor dem Google Analytics-Seitenaufruftreffer und das Test-Tracking wird mit diesem Treffer durchgeführt. In anderen Fällen – oder wenn nicht die empfohlene Optimize-Installation durchgeführt wurde – wird ein zusätzlicher Google Analytics-Datentreffer erfasst, um die Ausführung des Test-Tracking zu gewährleisten.

Durch eine Änderung der Testgewichtung werden keine Besucher zugewiesen. Selbst wenn Sie die Gewichtung einer Variante auf null setzen, kann es für sie dennoch Traffic von Besuchern geben, die ihr vor dieser Änderung zugewiesen waren.

Die Tests sind unabhängig voneinander. Ein einzelner Besuch kann an mehreren Tests teilnehmen. Es darf aber nicht zu Nebeneffekten kommen. Es ist durchaus in Ordnung, mehrere Tests auf derselben Seite durchzuführen, das sollte jedoch in verschiedenen Bereichen geschehen, um Verzerrungen zu vermeiden. Diese entstehen z. B., wenn mit der Variante eines Tests für eine Variante eines anderen Tests geworben wird.

Hinweis: Optimize-Varianten werden nach dem Best-Effort-Prinzip angewendet. Selbst wenn einige oder alle CSS-Selektoren Ihrer Varianten nicht vorhanden sind oder in den JavaScript-Änderungen Ausnahmen auftreten, wird der Besuch weiterhin als Teil der Testvariante erfasst.

Schließlich werden einige Ihrer Ausrichtungsregeln möglicherweise serverseitig ausgewertet, sodass der Test vollständig im heruntergeladenen Container gelöscht wird.

Targeting rule evaluation flow diagram

Ausgewählte A/B- und MVT-Varianten anwenden

Sobald die Varianten des Containers ausgewählt wurden, wird versucht, sie anzuwenden. Eine Variante ist definiert als eine Liste von Änderungsvorgängen (im Optimize-Editor zu sehen), die in einer bestimmten Reihenfolge angewendet werden. Es werden einige Optimierungen vorgenommen, wenn es keine Konflikte gibt.

Jede Änderung ist auf einen CSS-Selektor ausgerichtet, der einem oder mehreren Elementen entsprechen kann. Vom Optimize-Editor wird erkannt, ob eine Änderung auf mehrere Elemente ausgerichtet ist.

Häufig ist das Element einer Änderung während der Optimize-Ausführung nicht auf der Seite zu sehen. In einem solchen Fall wird dafür gesorgt, dass es ausgeblendet bleibt, indem eine erforderliche CSS-Regel hinzufügt und anschließend die Ausführung der Änderungsliste pausiert wird.

Sobald dieses Zielelement verfügbar ist, wird die Änderung angewendet, die CSS-Regel zum Ausblenden entfernt und versucht, die nächste Änderung in der Liste auf die gleiche Weise anzuwenden.

Sobald die Seite vom Browser als bereit gekennzeichnet wurde (nach dem DOMContentElement-Ereignis), wird in Optimize noch einmal versucht, alle verbleibenden Änderungen anzuwenden. Wird das Element einer Änderung zu diesem Zeitpunkt nicht gefunden, wird es einfach ignoriert. In Optimize wird dann der nächste Eintrag in der Liste bearbeitet.

Hinweis: Stiländerungen werden normalerweise mit CSS-Regeln implementiert, sodass der oben beschriebene Prozess für sie nicht durchlaufen werden muss. Stattdessen werden sie sofort angewendet, sobald Optimize geladen wird und ein zusätzliches Ausblenden nicht erforderlich ist.

JavaScript-Änderungen verfügen ebenfalls über einen Ziel-CSS-Selektor und werden ausgeführt, sobald das Element dieses Selektors vom Browser verfügbar gemacht wurde.

Die Implementierung einer vollständigen Variante in Optimize mit einer einzelnen JavaScript-Änderung (z. B. mit jQuery) in <BODY> wird nicht empfohlen, da Ihr Code möglicherweise später als geplant ausgeführt wird. Versuchen Sie, den Zielselektor eines JavaScript-Codes auf die Elemente zu beschränken, die Sie ändern möchten, oder auf das kleinstmögliche übergeordnete Containerelement.

Eine Änderung kann auch einen CSS-Selektor enthalten, der auf mehrere Elemente ausgerichtet ist, die zu unterschiedlichen Zeiten auf einer Seite erscheinen können. Sie werden bei der Auslieferung von Optimize geändert, aber am Ende werden alle eingeblendet. Hinweis: Im Optimize-Editor können mehrere Elemente durch Klicken bei gedrückter Umschalttaste ausgewählt werden.

Application of variants flow diagram

Wenn Sie benutzerdefinierte Ereignisse verwenden, um den Test zu aktivieren, werden die Targeting-Regeln nicht nur einmal beim Laden der Seite ausgewertet, sondern jedes Mal, wenn Sie ein Aktivierungsereignis senden. Beim ersten Abgleich der Regeln wird der Besucher einer Variante zugewiesen. Anschließend wird ein Google Analytics-Treffer (in der Regel ein Daten-Treffer) gesendet, um die Ausführung des Test-Tracking zu gewährleisten, und die Variantenänderungen werden angewendet.

Anders als bei der standardmäßigen Aktivierung durch Seitenaufbau ist das jedoch nicht das Ende der Laufzeit. Normalerweise sollten Sie jedes Mal weitere Aktivierungsereignisse senden, wenn sich der Status der Seite (z. B. URL oder DOM-Baum) erheblich ändert. Dabei gibt es zwei Möglichkeiten:

  • Die Ausrichtungsregeln sind weiterhin erfüllt. In diesem Fall wird die Variante "reaktiviert". Die Änderungen Ihrer Variante werden also noch einmal ausgeführt, aber nur auf neue Elemente angewendet, die bei der vorherigen Ausführung nicht verfügbar waren.

  • Die Ausrichtungsregeln sind nicht mehr erfüllt. In diesem Fall wird die Variante "deaktiviert". Änderungen werden also rückgängig gemacht und die Elemente werden in den Zustand zurückversetzt, in dem sie vor der Anwendung waren. Bei jedem Ereignis werden alle Deaktivierungen vor den Aktivierungen vorgenommen. Dadurch wird die Seite in ihren ursprünglichen Zustand zurückgesetzt, damit der neue Test korrekt angewendet werden kann. JavaScript-Änderungen können allerdings nicht automatisch rückgängig gemacht werden können.

Weitere Informationen

War das hilfreich?
Wie können wir die Seite verbessern?

Benötigen Sie weitere Hilfe?

Anmelden, um weitere Supportoptionen zu erhalten und das Problem schnell zu beheben