2009-06-17 12 views
7

Estoy intentando configurar un proxy de almacenamiento en caché inverso para la publicación de gráficos publicitarios (gif, jpg, swf). El proxy funciona bien y envía la solicitud al servidor de origen, pero parece que no puedo entender por qué el contenido no se almacena en caché. Mi configuración actual está abajo. El objetivo es almacenar en caché todas las solicitudes que coincidan con el prefijo/ca/​​URI. El servidor de origen está publicando archivos con URL limpias, sin extensiones de archivo, Cache-control max-age = 1 semana configurada en los encabezados del servidor de origen.Apache Reverse Caching Proxy: ¿por qué no es el almacenamiento en caché?

 
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] 

En la actualidad, la única almacenamiento en caché que he visto en realidad sucede es que los archivos locales de los que se accede en los servidores proxy, estoy buscando lo que me falta para obtener el contenido recoger del servidor de origen para ser almacenado en caché .

Me pregunto si tiene que ver con mod_cache que no almacena en caché porque el contenido se obtiene del servidor de origen, y no una ubicación en el disco. Buscando la forma de forzar todas las solicitudes que coincidan con ese prefijo.

Gracias!

p.s. - Parece que estoy teniendo este problema exacto: http://mail-archives.apache.org/mod_mbox/httpd-users/200901.mbox/%[email protected]%3E. Comprobaré mis permisos y revisaré los mensajes de depuración ...

Respuesta

10

La adición de estas directivas pareció activar el mecanismo de caché. Me imagino que tiene que ver con la expiración y los encabezados de control de caché enviados desde el servidor de origen, ya que estoy publicando imágenes con Symfony/PHP5 en lugar de directamente desde el sistema de archivos.

 
<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

Excelente !, pero si está utilizando un servlet para servir el contenido estático, por ejemplo, de una base de datos, comente la línea #CacheIgnoreQueryString En –

Cuestiones relacionadas