2009-06-17 49 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