Eine Änderung wird nicht sofort aktiv, warum?

Sie haben eine Änderung an Ihrer Homepage vorgenommen? Sie haben über die httpd.conf eine Serverseitige Einstellung vorgenommen? Sie haben neue Inhalte hochgeladen? Bei der Kontrolle über den Browser stellen Sie aber fest, dass die Änderung nicht wirksam ist?

Natürlich wurden die Inhalte gespeichert bzw. geändert. Nur Ihr Browser lädt noch veraltete Elemente. Aber warum ist das so? Server- wie Clientseitig gibt es Mechanismen, die für schnellen Seitenaufbau, Datensicherheit und Erreichbarkeit von Inhalten sorgen sollen.

Serverseitig können folgende Komponenten ursächlich sein:

  • File-Storage
    Hier ist Ihre Homepage gespeichert. Damit möglichst keine Daten verloren gehen, enthält ein File-Storage mehrere Festplatten, die alle vorhandenen Daten gleichermassen speichern, also spiegeln. Wenn Sie Änderungen an Ihrer Homepage speichern bzw. per FTP veröffentlichen, schreiben Sie auf einer dieser Festplatten. Anschließend spiegelt der File-Storage die Änderung auf alle weiteren Platten.

    Dieser Vorgang findet in der Regel live statt. Da Sie aber nicht alleine im File-Storage sind, kann es auch mal einen Moment länger dauern, wenn z. B. viele Kunden gleichzeitig Änderungen durchführen.
    So lange das Spiegeln nicht abgeschlossen wurde, können alte Inhalte noch an den LoadBalancer übergeben werden.

  • LoadBalancer
    Wird eine Domain im Browser eingetragen, wird diese Anfrage an den LoadBalancer geroutet. Dieser erzeugt eine Instanz und ruft die Daten von einer der Platten im File-Storage ab. Dann führt er z.B. ein PHP Skript aus. Das wiederum ruft Daten aus der MySQL-Datenbank ab und liefert dann das fertige Ergebnis aus. Wird die gleiche Anfrage erneut an den LoadBalancer gestellt, liefert er unmittelbar das gleiche Ergebniss aus. Nach einer Zeit x wird die Instanz verworfen und bei einer erneuten Anfrage an die Domain wird der Inhalt neu generiert.

    Die Zeit x ist abhängig von der Last auf dem LoadBalancer und den dahinter liegenden Systemen.

    Der LoadBalancer kann also veraltete Inhalte ausliefern, wenn eine Instanz generiert wurde, als Ihre Änderung noch nicht gespeichert wurde oder wenn Inhalte von einer Festplatte im File-Storage geladen werden, die noch nicht aktualisiert wurde.

Natürlich werden beide Komponenten permanent überwacht und bei Bedarf weiter optimiert. Beide Komponenten haben Ihre Vorteile: Das File-Storage-System sorgt für Datensicherheit. Das Ziel des LoadBalancer ist es...

  • Seiten möglichst schnell auszuliefern
  • die vorhandenen Resourcen möglichst effizient auszunutzen
  • für Ausfallsicherheit zu sorgen

Clientseitig (also Richtung Nutzer) gibt es allerdings ebenfalls Komponenten, die cachen:

  • Proxyserver
    Im Mobilfunk- und im Kabelnetz werden Daten nicht direkt zwischen Server und Client (Endgerät) ausgetauscht, sondern über einen Proxy verteilt. Dieser speichert die Seiten zwischen und liefert bei wiederholten Anfragen die gleichen Inhalte wieder aus.

    Auch in Firmen-Netzwerken ist häufig mindestens ein Proxy zwischengeschaltet.

  • Browser-Cache
    Auch Ihr Browser lädt Daten in seinen Cache, um den Seitenaufbau zu beschleunigen.

Jeder dieser Mechanismen für sich wird keine Einschränkung hervorrufen. Aber in der Summe kann es eben doch dazu kommen. Mal etwas überspitzt dargestellt:

  • Sie rufen im Browser Ihre Homepage auf. Weil Sie das öfter machen, lädt Ihr Browser die Inhalte aus seinem Cache.
  • Sie aktualisieren die Seite mehrfach. Der Browser fragt nun den Proxy Ihres Unternehmens nach neueren Inhalten. Wieder erscheint das gleiche.
  • Sie aktualisieren nochmal und nochmal. So lange, bis der Browser den Proxy "überzeugt" hat, neuen Inhalt nachzuladen und auszuliefern.
  • Der fragt unseren LoadBalancer, der gerade eine frische Instanz erzeugt aber eine veraltete Version vom File-Storage bekommt. Wieder wird Ihnen was falsches angezeigt.

Und so weiter. In der Realität wird das so nie passieren, stellt aber dar, warum nicht immer die aktuellen Inhalte angezeigt werden.

Aber: Wenn andere Besucher Ihre Seite aufrufen, werden diese sehr wahrscheinlich schon die neuen Inhalte angezeigt bekommen.

Was kann man in einem solchen Fall machen? Vertrauen Sie dem System und testen Sie die Änderung zu einem späteren Zeitpunkt. Sie werden feststellen, dass alles wie gewünscht funktioniert.