2009-06-17 143 views
7

我正在尝试为广告图形(gif,jpg,swf)服务设置反向缓存代理。代理工作正常,并将请求发送到原始服务器,但我似乎无法弄清楚为什么内容没有被缓存。我目前的配置如下。目标是缓存所有匹配/ ca /​​ URI前缀的请求。原始服务器使用干净的URL提供文件,没有文件扩展名,在源服务器标头上设置了Cache-control max-age = 1周。Apache反向高速缓存代理 - 为什么不高速缓存?

 
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] 

目前,我确实遇到过发生只缓存是的代理服务器上访问本地文件,我在寻找要缓存什么,我缺少获取内容从源服务器获取。

我想知道它是否与mod_cache不缓存有关,因为内容是从原始服务器获取的,而不是磁盘上的位置。寻找一种方法来强制所有匹配该前缀的请求被缓存。

谢谢!

p.s. - 看起来像我有这个确切的问题:http://mail-archives.apache.org/mod_mbox/httpd-users/200901.mbox/%[email protected]%3E。将检查我的权限,并通过调试信息...

回答

10

添加这些指令似乎踢了缓存机制。我想它与从源服务器发送的过期和缓存控制标题有关,因为我使用Symfony/PHP5而不是直接从文件系统提供图像。

 
<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

优秀!但如果你使用的是servlet从数据库服务于静态内容,例如,注释行 #CacheIgnoreQueryString在 – 2013-08-06 15:31:20