Ein gutes Beispiel wäre vielleicht Google
Treffer, versenkt: Eine der Seiten, bei denen der BFCache funktioniert. Die Seite mit den Suchergebnissen siehst du im "Auslieferungszustand", auch wenn sie längst stale ist.
Die Leute von Google wissen eben, was sie tun: Die wollen weder bei Usern, die den zurück Button gerne mal nutzen, nach Möglichkeit die selbe Anfrage nicht noch mal bearbeiten (manuell versteht sich.. Ist alles Handarbeit bei Google xD) noch wollen sie dir, wenn sich in der Zwischenzeit die Zahl oder Reihenfolge der Ergebnisse verändert hat, eine völlig andere Ergebnisliste geben.
Die Usererwartung ist hier komplett umgekehrt: Der User will genau die Liste, die er eben gesehen hat und würde sich sehr wundern, wenn zB der Link den er gerade angeklickt hat, jetzt nicht mehr da ist, weil dessen Ranking sich so änderte, dass diese auf die vorherige Seite rutschte.
und das ist eben nicht sache des webmasters, ebensowenig wie referrer, werbung, darstellung und skripte! es ist nichts anderes als ein vorschlag oder eine bitte des webmasters, denn am ende entscheidet immer der user, was er mit den vom server gesendeten daten macht, und wenn er dafür nen eigenen browser entwickeln muss..
Jo und der Table Tag in HTML 4.01 spezifiziert auch nicht, dass eine Tabelle dargestellt werden soll, er ist nur ein Vorschlag, denn wenn ich jenen Browser dann so schreibe, dass die Daten in dem Tag als Binärcodierung einer bmp verstanden werden, dann ist es ein Bild.
Nur würde ich es schwer haben jemandem davon zu überzeugen, dass etwas ein "Browser" ist, wenn es weder HTTP noch HTML konform arbeitet. Eigentlich ist das als Argument aber ein Schuß in den eigenen Fuß, denn ironischerweise war die Diskussion lange genau andersherum. RFC 2616 sagte in 13.13: "History mechanisms and caches are different. In particular history mechanisms SHOULD NOT try to show a semantically transparent view of the current state of a resource. Rather, a history mechanism is meant to show exactly what the user saw at the time when the resource was retrieved." Die Realität hat die Spezifikation eingeholt, die RFC 7234 enthält diesen Satz nicht mehr.
(offenbar ist es also schlimmer wenn jemand mit dem zurück-button einen abgebrochenen post oder den kontostand sieht, als die tatsache, dass derjenige bereits zugriff auf alle lokalen daten hat, da der PC ungesichert im öffentlichen raum steht, aber gut)
Wie gesagt: "Legende hat es". Ich habe es aus einem Kommentar in Bugzilla (
Teil 1,
Teil 2).
also blanker unsinn, was das "sicherheits-argument" angeht.
Die RFC sieht das genauso und schreibt auch klar, dass "no-store" keine Sicherheit garantieren kann.
Ich muss hier dennoch des Teufels Advokat spielen und sagen: Die Banken hatten ein berechtigtes Interesse daran, dass die Inhalte zwischen Login und Logout nicht automatisch lokal verfügbar gemacht werden. Ja es ist kein "Sicherheitsfeature". Natürlich hilft es nichts gegen Bundestrojaner und amerikanische Geheimdienste und chinesische Hacker. Aber: Die User sind doof, man kann froh sein, wenn sie sich im Internetcafe auch vom Onlinebanking abmelden. Sie haben nach dem Prinzip "jedes bisschen hilft" den jungen Firefox kurzerhand ausgesperrt, weil er als einziger etwas tat, was in der RFC stand. In einer Zeit, in der IE gerade den Krieg mit Netscape gewonnen und etwa 90% des Marktes hatte. Ach ja der IE6.. Garantiert 98% kompatibel zu IE6 xD
Ich sollte anmerken, für den Fall, dass du die Bugzilla Seite nicht liest, dass Firefox auch damals den "no-store" als solchen verstand und nicht speicherte. Es ging um "no-cache". Man hat dem jungen Mozilla quasi aufgezwungen dieses in gleicher Art wie der IE zu interpretieren. Auch heute noch wird "no-cache" bei Nutzung über SSL so ausgelegt, obwohl no-store inzwischen auch von der Konkurrenz verstanden wird. Und ja die Banken hätten einfach andere header senden können, wäre wahrscheinlich sogar einfacher gewesen, wie einen Browser aus zu sperren. Aber so ist die Legende, nur Fisher kann dir sagen, was wirklich passiert ist.
Inzwischen hat sich der Standard der Realität angepasst. Es gab nie einen Browser, der die History (all the way) so implementierte, wie man es im letzten Jahrtausend für sinnvoll hielt. Außer wget vielleicht, aber dessen HTML Kentnisse lies sogar den IE gut aussehen
Über den BFCache:
https://developer.mozilla.org/en-US/docs/Using_Firefox_1.5_caching Ja 1.5.. Soweit ich weiß gilt der Inhalt der Seite aber noch. Führt zu dem "tollen" Webmaster Tip, dass man zwar Caches haben, aber dieses, von vielen als "user unfriendly" (Twitter Beispiel!) eingestufte Verhalten sabotieren kann, in dem man ein "unload" event nutzt.
d.h. der button ist nicht dasselbe wie ein link bzw. die adresseingabe in die adressleiste.. bei letzterem findet immer eine server-kommunikation statt
Ich weiß, ich weiß, Wall of Text. Aber lies den Teil oben über Heise noch mal.
Ansonsten muss ich mich entschuldigen. Ich rede hier über RFC2616, aber die zitierten Passagen sind schon im Http1.1 Proposal von 1997 (RFC2068) und gehen direkt auf die Formulierung in Http1.0 (RFC1945) von 1996 zurück:
User agents often have history mechanisms, such as "Back" buttons and history lists, which can be used to redisplay an entity retrieved earlier in a session. By default, the Expires field does not apply to history mechanisms. If the entity is still in storage, a history mechanism should display it even if the entity has expired, unless the user has specifically configured the agent to refresh expired history documents.
Stellt sich die Frage, ob es je einen Http1.0 Browser gab, der das auch so handhabte. Ich vermute nicht.