Ich habe es gerade mod_mem_cache
auf 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!