2009-06-17 14 views
7

Ich versuche, einen Reverse-Caching-Proxy für Anzeigengrafik (gif, jpg, swf) einzurichten. Die Proxyfunktion funktioniert einwandfrei und sendet die Anfrage an den Ursprungsserver, aber ich kann nicht herausfinden, warum der Inhalt nicht zwischengespeichert wird. Meine aktuelle Konfiguration ist unten. Das Ziel besteht darin, alle Anfragen zwischenzuspeichern, die dem Präfix/ca/​​URI entsprechen. Der Ursprungsserver liefert die Dateien mit sauberen URLs, keine Dateierweiterungen, Cache-Kontrolle max-age = 1 Woche, die auf den Header des Ursprungsservers festgelegt sind.Apache Reverse Caching Proxy - warum wird nicht zwischengespeichert?

 
ProxyRequests Off 
<Proxy *> 
Order deny,allow 
Allow from all 
</Proxy> 
<IfModule mod_disk_cache.c> 
CacheEnable disk/
CacheRoot "/var/cache/mod_proxy" 
CacheDirLevels 3 
CacheDirLength 5 
CacheIgnoreCacheControl On 
</IfModule> 

RewriteCond %{REQUEST_URI} ^/ca/* 
RewriteRule ^/(.*)$ http://origin.webserver.com/$1 [P,L] 

Derzeit ist die einzigen Caching ich eigentlich geschehen gesehen habe, dass die lokalen Dateien auf dem Proxy-Server zugegriffen wird, suche ich, was ich bin fehle Inhalt geholt vom Ursprungsserver erhalten zwischengespeichert werden .

Ich frage mich, ob es mit mod_cache nicht Caching zu tun hat, weil der Inhalt vom Ursprungsserver abgerufen wird, und nicht einen Speicherort auf der Festplatte. Suchen nach einer Möglichkeit, alle Anfragen, die mit diesem Präfix übereinstimmen, zu cachen.

Danke!

p.s. - sieht so aus als hätte ich genau dieses Problem: http://mail-archives.apache.org/mod_mbox/httpd-users/200901.mbox/%[email protected]%3E. Will meine Berechtigungen überprüfen und über Debug-Nachrichten gehen ...

Antwort

10

Hinzufügen dieser Anweisungen schien den Cache-Mechanismus in Gang zu treten. Ich denke, es hat etwas mit Ablauf- und Cache-Control-Headern zu tun, die vom Ursprungsserver gesendet werden, da ich Images mit Symfony/PHP5 statt direkt aus dem Dateisystem ausliege.

 
<IfModule mod_disk_cache.c> 
    CacheEnable disk/
    CacheRoot "/var/cache/mod_proxy" 
    CacheDirLevels 3 
    CacheDirLength 5 
    CacheIgnoreCacheControl On 
    CacheMaxFileSize 100000000 
    CacheIgnoreNoLastMod On 
    CacheMaxExpire 1209600 
    CacheIgnoreQueryString On 
</IfModule> 
+1

Ausgezeichnet !, aber wenn Sie ein Servlet verwenden den statischen Inhalt zu dienen, zum Beispiel aus einer Datenbank, kommentieren Sie die Zeile #CacheIgnoreQueryString On –

Verwandte Themen