2009-06-17 6 views
7

Je tente de mettre en place un proxy de mise en antémémoire inversée pour la diffusion de graphiques publicitaires (gif, jpg, swf). Le proxy fonctionne correctement et envoie la requête au serveur d'origine, mais je n'arrive pas à comprendre pourquoi le contenu n'est pas mis en cache. Ma configuration actuelle est ci-dessous. L'objectif est de mettre en cache toutes les demandes qui correspondent au préfixe/ca/​​URI. Le serveur d'origine traite les fichiers avec des URL propres, sans extension de fichier, Cache-control max-age = 1 semaine définie sur les en-têtes du serveur d'origine.Apache Reverse Caching Proxy - Pourquoi n'est-ce pas la mise en 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] 

Actuellement, la seule mise en cache que j'ai vu réellement se produire est que des fichiers locaux accessibles sur les serveurs proxy, je suis à la recherche de ce que je suis absent pour obtenir le contenu récupéré à partir du serveur d'origine à être mis en cache . Je me demande si cela concerne la mise en cache de mod_cache car le contenu est extrait du serveur d'origine et non d'un emplacement sur le disque. Vous cherchez un moyen de forcer la mise en cache de toutes les demandes correspondant à ce préfixe.

Merci!

p.s. - On dirait que j'ai ce problème: http://mail-archives.apache.org/mod_mbox/httpd-users/200901.mbox/%[email protected]%3E. Va vérifier mes permissions et passer en revue les msgs de débogage ...

Répondre

10

L'ajout de ces directives a semblé mettre en marche le mécanisme de cache. Je pense qu'il s'agit d'en-têtes d'expiration et de contrôle de cache envoyés depuis le serveur d'origine puisque je diffuse des images avec Symfony/PHP5 au lieu de les utiliser directement depuis le système de fichiers.

 
<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

excellent !, mais si vous utilisez un servlet pour servir le contenu statique, par exemple à partir d'une base de données, commenter la ligne #CacheIgnoreQueryString sur –

Questions connexes