mod_mem_cache liefert den falschen Inhalt!

mod_mem_cache liefert den falschen Inhalt!

Ich habe es gerade mod_mem_cacheauf einem Apache2/PHP5-Server aktiviert, auf dem eine benutzerdefinierte App läuft, und war entsetzt über das Ergebnis. Auf einmal wurden die falschen Bilder angezeigt, und ich habe einmal bemerkt, dass eine Anfrage nach einer HTML-Seite stattdessen eine CSS-Seite anzeigte! Was könnte die Ursache dafür sein? Die Konfiguration lautet wie folgt:

CacheEnable-Speicher /
MCacheGröße 204800
CacheDefaultExpire 3600
CacheIgnoreHeaders Set-Cookie
MCacheMinObjectSize 100
MCacheMaxObjectSize 5242880
MCacheRemovalAlgorithm LRU

Antwort1

Intern innerhalb von mod_cache und mod_*_cache sind die Nachschlageschlüssel recht lange Prüfsummen der kanonischen URI und aller Vary:-Parameter (für ausgehandelten Inhalt). Es ist äußerst unwahrscheinlich, dass diese Nachschlageschlüssel kollidieren. Wenn Sie also für die obige Konfiguration falsche Antworten erhalten, scheint es sich um einen Fehler zu handeln.

Ich bin einer der Autoren der Caching-Module. Wenn Sie mir die Details der Anfrage per E-Mail schicken könnten ([email geschützt]) Und[email geschützt]oder melden Sie einen Fehler mit einigen Details, die wir zur Reproduktion verwenden können -http://httpd.apache.org/bug_report.html- wir können uns darum kümmern.

Oder posten Sie sie einfach hier und wir arbeiten das Problem.

Antwort2

Ich habe das Problem gefunden. Ich habe mod_rewrite verwendet, um URLs zu Dateien, die nicht existierten, in ein PHP-Skript umzuschreiben, das diese URLs an das richtige Modul weiterleitet. Da alle diese virtuellen URLs in dieselbe URL umgeschrieben wurden, kam mod_cache durcheinander. Um dies zu beheben, habe ich den folgenden Teil meiner Apache-Konfiguration geändert:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* /dispatch.php

Zu:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) /dispatch.php/$1

Und jetzt scheint das Caching perfekt zu funktionieren!

verwandte Informationen