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

우수!,하지만 당신은 데이터베이스에서 예를 들어, 정적 콘텐츠를 제공하는 서블릿을 사용하는 경우, 라인 #CacheIgnoreQueryString에 코멘트 –