2009-06-17 6 views
7

Sto tentando di impostare un proxy di caching inverso per la pubblicazione di annunci grafici (gif, jpg, swf). Il proxy sta funzionando correttamente e inviando la richiesta al server di origine, ma non riesco a capire perché il contenuto non venga memorizzato nella cache. La mia attuale configurazione è sotto. L'obiettivo è memorizzare nella cache tutte le richieste che corrispondono al prefisso/ca/​​URI. Il server di origine sta servendo i file con URL puliti, senza estensioni di file, Cache-control max-age = 1 settimana impostato sulle intestazioni del server di origine.Apache Reverse Caching Proxy: perché non si memorizza nella cache?

 
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] 

Attualmente, l'unico di caching che ho visto in realtà accadere è che di file locali accessibili sui server proxy, sto cercando quello che mi manca per ottenere contenuti scaricati dal server di origine da memorizzare nella cache .

Mi chiedo se ha a che fare con mod_cache non caching perché il contenuto viene recuperata dal server di origine, e non una posizione sul disco. Alla ricerca di un modo per forzare tutte le richieste che corrispondono a quel prefisso per essere memorizzate nella cache.

Grazie!

p.s. - sembra che sto avendo questo problema esatto: http://mail-archives.apache.org/mod_mbox/httpd-users/200901.mbox/%[email protected]%3E. Sarà controllare i miei permessi e andare oltre msg di debug ...

risposta

10

L'aggiunta di queste direttive sembrava a calci il meccanismo di cache in marcia. Immagino che abbia a che fare con le intestazioni di scadenza e la cache di controllo come inviato dal server di origine dal momento che sto servendo le immagini con Symfony/PHP5 anziché direttamente dal file system.

 
<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

eccellente !, ma se si utilizza un servlet per servire il contenuto statico, ad esempio da un database, un commento alla riga #CacheIgnoreQueryString On –