Firefox und das Caching
19. April 2019 um 14:25 Uhr von Atari-Frosch
Ach Firefox, Du übertreibst es manchmal echt mit dem Caching.
Ich hatte mir letztens für meine neuen beruflichen Pläne eine separate Domain gebucht und dafür natürlich auch den Server vorbereitet, also Mail (postfix) und Web (nginx). Ich war mir nur noch nicht mit mir einig gewesen, was ich da auf die Website draufsetzen sollte, also eine statische Website oder ein Blog oder vielleicht was ganz anderes?
Zunächst einmal rief ich aber mit dem Browser die Domain auf, um zu sehen, ob sie überhaupt sicher erreichbar ist. Ich hatte eine index.html draufgesetzt mit „Nothing here yet“ drin. Statt auf der neuen Domain landete ich jedoch auf meiner statischen Website. Huch?
Ja, das war dann der klassische Fehler, ne. Ich hatte den symbolischen Link von sites-available nach sites-enabled vergessen. nginx liefert dann einfach die Startseite der ersten Site in seiner Liste, nach alphabetischer Sortierung. Kein Problem, Link gesetzt, service nginx reload. Dann rief ich die Domain wieder auf – und landete wieder auf meiner statischen Website. Äh.
Das Log der neuen Domain war leer. Das Log meiner statischen Website zeigte nur meinen Aufruf der Startseite, ohne daß zu erkennen war, daß ich eigentlich woanders hinwollte. Das Log von nginx selbst schwieg auch zu dem Thema.
Eine Stunde lang probierte ich verschiedene Einstellungen in der Konfiguration für die neue Site. Erfolglos. Firefox ging immer wieder auf meine statische Website.
Und dann kam ich mal auf die glorreiche Idee, die neue Site mit lynx aufzurufen. Siehe da, ich bekam sofort die richtige Site. Dann machte ich sicherheitshalber mal noch Chromium auf, und auch der fand die richtige Site sofort. Schließlich ließ ich auf dem Server den CertBot für Let’s Encrypt auf die Site los: klappte sofort.
Firefox landete immer noch auf der falschen Site.
Dann fiel mir auf, daß die Aufrufe nach den ersten zwei oder drei gar nicht mehr im Log des Webservers auftauchten. Der machte das, ohne nochmal den Webserver zu fragen!
Erst als ich die Site, weil das ja jetzt ging, mit https aufrief, landete ich auch wirklich dort. m(
Das war aber erst der erste Streich.
Ich hatte mich schließlich dafür entschieden, auf der neuen Site ein Blog einzurichten, aber nicht mehr mit WordPress, sondern mit dem Fork ClassicPress. Runterladen, auspacken, Datenbank mit User einrichten, wp-config.php anpassen, Site-Konfiguration in nginx anpassen, alles wie gewohnt. Dann die Site wieder aufrufen.
Es kam wie erwartet die Konfigurationsseite von ClassicPress. Ich legte meinen Admin-Namen und mein Paßwort fest und wollte erstmal an die Themes gehen. Also suchte ich mir eines der angebotenen Themes heraus – die Standard-Themes, die so mitgeliefert werden, sind für das, was ich vorhabe, eher nicht geeignet –, und wollte das installieren. ClassicPress fragte mich nach FTP(s)-Zugangsdaten.
Achja, stimmt. Zugriffsrechte. Beim Entpacken von ClassicPress war ich nicht der User www-data gewesen. Also chown -R www-data.www-data * im Verzeichnis angewendet. Dann versuchte ich erneut, das Theme zu installieren. ClassicPress fragte mich nach FTP(s)-Zugangsdaten. Wus?
Ein ls -l im ClassicPress-Verzeichnis informierte mich darüber, daß zwar die Gruppe, aber nicht der User geändert worden war. Na gut, dann halt nochmal explizit: chown -R www-data *, und nochmal extra nachgesehen, ob jetzt wirklich alles diesem User gehört. Ja, jetzt.
Ich wurde unbeirrt weiterhin nach den FTP-Zugangsdaten gefragt.
Moment. War das etwa schon wieder ein Caching-Problem?
Nun konnte ich ja mit Seiten-Reload arbeiten, das ging ja vorher nicht, weil ich ja direkt auf einer anderen Domain landete, die dann auch in der Eingabezeile des Browsers stand. Also führte ich einen Reload mit dem Plugin Hard Refresh durch, das den Cache vollständig ignoriert (mit Ctrl-Shift-R bzw. Ctrl-Shift-F5 kann man sich darauf nicht immer 100%ig verlassen). Und siehe da: Auf einmal konnte ich Themes und dann auch Plugins installieren, ohne daß nach FTP-Zugangsdaten gefragt wurde.
Auch diese erste Rückantwort von ClassicPress hatte der Firefox im Cache, und zeigte sie auf die gleiche Aktion hin wieder an, ohne nachzuschauen, ob der Server das jetzt anders sieht.
Das Plugin hatte ich mir letztens installiert gehabt, weil ich beim Arbeiten in den Fotoalben meiner Foto-Website Fotos und Thumbnails nicht aktualisiert dargestellt bekam, wenn ich eine neuere Version hochgeladen hatte. Da tausche ich nämlich derzeit die älteren Scans der Pocket-Negative teilweise gegen die Scans der entsprechenden Fotos aus, wenn diese in besserem Zustand sind, und da finde ich es störend, wenn ich dann doch immer wieder die alte Version angezeigt bekomme.
Was ich hilfreich fände: Die Möglichkeit, das Caching für einzelne Websites abschalten zu können. Gerade, wenn man auf einer Website Dinge verändert, darf das Caching nicht dazwischenfunken. Sonst ist man ewig auf Fehlersuche, dabei gibt es schon längst keinen mehr.
22. April 2019 at 8:05
Also es war bei Firefox mal so wie bei den meisten anderen Browser auch, wenn mann auf F5 drückt, wird die Seite vom Server neu geladen … aber ich hab schon länger kein Firefox mehr benutzt.
22. April 2019 at 12:59
@SackOhneSenf: Das ist schon richtig, aber: Beim normalen Reload guckt ein Browser erstmal nach, ob er bestimmte Elemente von der Seite bereits im Cache gespeichert hat. Eigentlich sollte er dann beim Server abfragen, ob sich diese Elemente seit seinem letzten Zugriff verändert haben (http: HEAD), bevor er in seinen Cache greift. Firefox scheint das nicht zu tun, sondern nimmt grundsätzlich die Version aus seinem Cache.
Es gibt dann noch die Tastenkombination Ctrl-Shift-F5 bzw. Ctrl-Shift-R, auf die hin der Browser eigentlich seinen Cache ignorieren und alle Elemente erneut vom Server holen soll. Firefox hält sich aber nicht immer so wirklich dran und greift auch dann gerne auf seinen eigenen Cache zurück.
Erst das Plugin „Hard Refresh“ zwingt den Firefox dazu, seinen Cache wirklich zu ignorieren und alle Elemente der Seite neu vom Server zu laden.
Der Hintergrund des Cachings ist ja, daß man zum einen generell einen schnelleren Seitenaufbau bei einem Reload hat und zum anderen – gerade bei langsamen Verbindungen – vor allem auf große Dateien wie Bilder, Audio und Videos nicht jedesmal erneut ewig lang warten muß. Also eigentlich ’ne gute Idee. Ohne die HEAD-Abfrage beim Server kann aber dann halt das rauskommen, was mir da vor ein paar Tagen passiert ist.