08.04.2008, 14:24
|
#1 (permalink)
| | PostRank: 5
Registriert seit: 28.02.2005
Beiträge: 301
| Cache-Problem - Nutzer sehen nicht die aktuelle Version der Website Auf der Website edd - entdecke dein dekanat nutze ich WordPress als CMS. Seit längerer Zeit berichten mir Nutzer, dass es zu folgendem Problem kommt:
- auf der Startseite werden nicht die aktuellen, sondern veraltete Beiträge angezeigt
- auch auf anderen Seiten werden z.B. die neuesten Kommentare nicht angezeigt
Mittlerweile habe ich im head-Bereich <meta name="expires" content="0"> gesetzt und auch die interne Caching-Funktion von WordPress angewiesen, die Seiten nur für einige Stunden zu cachen. Die Nutzer berichten jedoch, dass neue Artikel über Wochen nicht angezeigt werden. Bei einigen funktioniert es wieder, wenn sie den Internetcache leeren, aber das ist ja keine Lösung, wenn ich für die Nutzung einer Website immer den Cache leeren muss. Bei einigen funktioniert es nicht mal nach Leerung des Cache korrekt.
Das Problem besteht übrigens seit Dezember 2007. Die Seite nutzt immer die aktuellste Version von WordPress, gegenwärtig 2.5. Das Problem besteht etwa seit WordPress 2.3.
Kennt jemand die Problematik, oder hat jemand noch eine Idee, die mir weiterhilft?!
__________________ METAFAKTEN // Netzgeschehen und freie Software
Geändert von Johannes Ries (08.04.2008 um 14:32 Uhr).
|
| |
08.04.2008, 17:26
|
#2 (permalink)
| | PostRank: 10
Registriert seit: 21.10.2006
Beiträge: 3.069
| Die Seite sendet einen falsches Datum im Response- Header: Code: Expires: Thu, 19 Nov 1981 08:52:00 GMT
Last-Modified: Sun, 19 Nov 2006 06:56:06 GMT Das hat zur Folge, daß der Browser, beim nächsten Aufruf den Server mit Code: If-Modified-Since: Sun, 19 Nov 2006 06:56:06 GMT das nächste mal den Server befragt, der aber mit Code: HTTP/1.x 304 Not Modified antwortet.
Warum das so ist, ist schwer nachvollziehbar. Verwendest Du irgendein WP-Cache- Plugin?
Ansonsten könntest Du versuchsweise mal folgende Zeile ganz am Anfang noch vor dem '<!DOCTYPE html PUBLIC...' in der Datei header.php des Themes einfügen: PHP-Code: <?php nocache_headers(); ?> Davor oder danach dürfen keine Leerzeilen oder Leerzeichen stehen.
Gruß
Ingo |
| |
09.04.2008, 09:38
|
#3 (permalink)
| | PostRank: 5
Registriert seit: 28.02.2005
Beiträge: 301
| Hallo Ingo,
danke für deine ausführliche Antwort. Ich verwende kein WP-Cache- Plugin.
Auf den Response- Header zu schauen habe ich noch gar nicht in Betracht gezogen. Danke für den Wink. Ich habe jetzt mal den nocache-Befehl mal eingefügt - aber der bringt nur was bei WP-Cache- Plugins was, oder?
Im Moment bekomme ich: Code: Last-Modified: Wed, 09 Apr 2008 07:28:55 GMT Wäre zu beobachten, ob sich das Problem gelöst hat?!
Vielen Dank aufs erste
Johannes
__________________ METAFAKTEN // Netzgeschehen und freie Software
|
| |
09.04.2008, 09:47
|
#4 (permalink)
| | WPD-Team
Registriert seit: 05.10.2006
Beiträge: 12.943
| Zitat:
Zitat von Johannes Ries Im Moment bekomme ich: Code: Last-Modified: Wed, 09 Apr 2008 07:28:55 GMT | Sieh nach den Cache-Headern: Code: Cache-Control: no-cache, must-revalidate, max-age=0
Expires: Wed, 11 Jan 1984 05:00:00 GMT
Pragma: no-cache Zitat: |
Wäre zu beobachten, ob sich das Problem gelöst hat?!
| Ja. Dafür wirst du jetzt sicher einen ziemlichen Anstieg des Website-Datenaufkommens beobachten, da die Daten eben nicht mehr aus dem Cache kommen, sondern jedesmal neu von deiner Seite geladen werden. |
| |
09.04.2008, 09:52
|
#5 (permalink)
| | PostRank: 10
Registriert seit: 21.10.2006
Beiträge: 3.069
| Die nocache_headers()-Funktion hat nichts mit WP-Cache- Plugins zu tun. Code: Last-Modified: Wed, 09 Apr 2008 07:28:55 GMT sieht doch erstmal gut aus 
Allerdings ist das nur ein Workaround, damit wird zwar die Auswirkung "bekämpft", aber die Ursache bleibt leider im Dunkeln. Konkret stellt sich halt die Frage, wer oder was eigentlich das falsche Last-Modified setzt.
Gruß
Ingo |
| |
09.04.2008, 09:58
|
#6 (permalink)
| | PostRank: 10
Registriert seit: 21.10.2006
Beiträge: 3.069
| Zitat:
Zitat von marX Ja. Dafür wirst du jetzt sicher einen ziemlichen Anstieg des Website-Datenaufkommens beobachten, da die Daten eben nicht mehr aus dem Cache kommen, sondern jedesmal neu von deiner Seite geladen werden. | Bei WP werden die Seiten, von Feeds mal abgesehen, grundsätzlich nicht aus dem Cache geladen, weil der Last-Modified Wert normalerweise ganz fehlt. Besser wäre also wahrscheinlich, die Werte anstelle des Aufrufes von nocache_headers() einfach zu löschen: PHP-Code: <?php @header('Expires:'); @header('Last-Modified:'); @header('Cache-Control:'); ?> Gruß
Ingo
Geändert von Putzlowitsch (09.04.2008 um 10:08 Uhr).
|
| |
09.04.2008, 10:05
|
#7 (permalink)
| | PostRank: 10
Registriert seit: 21.10.2006
Beiträge: 3.069
| Ich vermute aber eher, das der Server/PHP beim Fehlen der Werte für "Expires" und "Last-Modified" diese selber setzt. Und zwar auf das Datum der index.php im WP- Wurzelverzeichnis (diese wird ja aufgerufen). Oder es ist ein großer Zufall, daß diese Datei index.php als Dateidatum den 19.11.2006 07:56 hat, zumindest wird das bei mir lokal so angezeigt Nachtrag: Oder anders herum. Also der Server setzt im Response- Header zunächts die Werte, z.B. Last-Modified auf das Dateidatum der aufgerufenen index.php. Da WP diese Werte normalerweise nicht ändert, bleiben sie also so stehen. Es könnte also doch funktionieren, wenn man diese einfach am Anfang der header.php wieder zurücksetzt.
Es dürfte sich also um ein Konfigurationsproblem von Server/PHP handeln.
Gruß
Ingo
Geändert von Putzlowitsch (09.04.2008 um 10:15 Uhr).
|
| |
09.04.2008, 10:18
|
#8 (permalink)
| | WPD-Team
Registriert seit: 05.10.2006
Beiträge: 12.943
| Zitat:
Zitat von Putzlowitsch Bei WP werden die Seiten, von Feeds mal abgesehen, grundsätzlich nicht aus dem Cache geladen, weil der Last-Modified Wert normalerweise ganz fehlt. | Ist mir klar. Ist ja bei dynamischen Seiten mit ständig geänderten Inhalten auch okay. Und statische Inhalte wie Bilder sollten ja trotzdem aus dem Cache kommen. (OT: Aber warum setzt man den "Last-modified"- Header zwar bei Feeds, aber nicht bei den normalen HTML-Seiten?)
Ich wollte oben noch dazu schreiben, dass das eben nur die Smptome bekämpft aber nicht die Ursache. Wollte aber den OP nicht verwirren.
PS: Wenn mod_headers verfügbar ist kann man die HTTP- Header vielleicht auch in der .htaccess setzen. |
| |
09.04.2008, 10:26
|
#9 (permalink)
| | PostRank: 10
Registriert seit: 21.10.2006
Beiträge: 3.069
| Bei Feeds ist das einfach, da kann WP direkt aus der Datenbank auslesen, wann es die letzte Änderung gab. Bei den Seiten selber allerdings nicht, gerade wegen einer Vielzahl möglicher dynamischer Inhalte, die irgendwo in der Sidebar oder sonstwo im Theme oder über Plugins eingefügt sein können.
Ich denke mal, das die Variante mit dem Löschen der Header in der header.php am paraktikabelsten ist, wenn sie funktioniert. Nur als Workaround versteht sich, der eigentlichen Ursache sollte man schon auf die Schliche kommen.
Gruß
Ingo |
| |
09.04.2008, 10:39
|
#10 (permalink)
| | WPD-Team
Registriert seit: 05.10.2006
Beiträge: 12.943
| Stimmt, denken wir nur mal an ein "User online:"- Plugin. |
| | | Themen-Optionen | | | | Ansicht | Linear-Darstellung |
Forumregeln
| Es ist dir nicht erlaubt, neue Themen zu verfassen. Es ist dir nicht erlaubt, auf Beiträge zu antworten. Es ist dir nicht erlaubt, Anhänge hochzuladen. Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten. HTML-Code ist aus. | | | Alle Zeitangaben in WEZ +1. Es ist jetzt 02:20 Uhr. | |