Quick Tipp: Wenn der Browser nicht mehr aus dem BFCache lädt

von Kevin Hall
Quick Tipp: Wenn der Browser nicht mehr aus dem BFCache lädt

Jeder Browser besitzt einen sogenannten BFCache, das steht für Back and Forward Cache und ist für den Zurück- und Vorwärts-Button im Browser zuständig. Jeder Browser hat seine eigene Logik, welche Bedingungen erfüllt sein müssen, damit der BFCache funktioniert. Wir gehen in diesem Quick Tipp speziell auf den Firefox Browser ein.

Ist Zustand

Für unseren Kunden haben wir mittels JavaScript und Ajax dynamische Tabellen generiert, über die flexibel innerhalb der Tabelle gefiltert werden kann. Diese Filterung wird für jede Tabelle gespeichert und automatisch wieder gesetzt, sobald der Benutzer zu dieser Tabelle zurückkehrt.

Gesetzter Tabellenfilter

Anforderung

Nun war der Wunsch des Kunden, dass die Filterung gelöscht wird, sobald man über die Seiten-Navigation wieder zurück in den Dialog kommt. Damit aber die Filterung nicht gänzlich verloren ist, soll sichergestellt werden, dass über den Browser Zurück-Button die Seite aus dem Cache geladen wird.

Seitennavigation des Kunden Portals

Problemstellung

Während der Entwicklung ist uns aufgefallen, dass im Browser Firefox der Zurück-Button die Informationen nicht aus dem Cache holt, sondern einen Request an den Server sendet und somit den Inhalt neu generiert. Beim Testen in Chrome hingegen funktioniert der Zurück-Button wie gewünscht und holt den Inhalt aus dem Cache.

Lösungsweg für den Firefox BFCache

Unter folgenden Bedingungen greift der BFCache nicht mehr:

  • Wenn im JavaScript das Event unload oder beforeunload verwendet wird

  • Wenn speziell im HTTP Header das Attribut cache-control: no-store oder cache-control: no-cache übermittelt wird

  • Die Seite muss beim Aufruf komplett geladen werden, damit diese vom BFCache gespeichert wird

  • Wenn auf der Seite ein Frame eingebunden ist, wird nur das erste geladene Frame gespeichert. Wenn der Inhalt des Frames geändert wird, wird dieses nicht im BFCache abgespeichert, da es sich hierbei um keine neue Seite handelt.

In unserem konkreten Fall wurde die beforeunload Funktion verwendet, um festzustellen, ob der Benutzer die Seite verlassen hat, bevor diese vollständig geladen wurde. Diese haben wir mit dem der Funktion pagehide ausgetauscht, welches ein ähnliches Verhalten aufweist wie die beforeunload.

Das bedeutet, wenn der BFCache nicht beeinträchtigt werden soll, muss bei der Entwicklung unbedingt auf diese Bedingungen geachtet werden.

Zurück

© 2006-2024 exensio GmbH
Einstellungen gespeichert
Datenschutzeinstellungen

Wir nutzen Cookies auf unserer Website. Einige von ihnen sind essenziell, während andere uns helfen, diese Website und Ihre Erfahrung zu verbessern.

Sie können Ihre Einwilligung jederzeit ändern oder widerrufen, indem Sie auf den Link in der Datenschutzerklärung klicken.

Zu den gesetzlichen Rechenschaftspflichten gehört die Einwilligung (Opt-In) zu protokollieren und archivieren. Aus diesem Grund wird Ihre Opt-In Entscheidung in eine LOG-Datei geschrieben. In dieser Datei werden folgende Daten gespeichert:

 

  • IP-Adresse des Besuchers
  • Vom Besucher gewählte Datenschutzeinstellung (Privacy Level)
  • Datum und Zeit des Speicherns
  • Domain
You are using an outdated browser. The website may not be displayed correctly. Close