Apache反向高速缓存代理 - 为什么不进行高速缓存?

时间:2009-06-17 19:09:37

标签: caching apache2 reverse-proxy

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

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/%3C497F6ED3.7080606@gmail.com%3E。将检查我的权限并查看调试消息...

1 个答案:

答案 0 :(得分:11)

添加这些指令似乎会使缓存机制陷入困境。我认为这与从原始服务器发送的expiration和cache-control标头有关,因为我使用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>