llzqq 发表于 2013-01-05 11:05

ATS 无法缓存PHP了

本帖最后由 llzqq 于 2013-01-05 11:07 编辑

以前没注意过这个问题,今天想试试缓存PHP文件,结果调试半天无果,无法被缓存:

CONFIG proxy.config.http.cache.ignore_client_no_cache INT 1
CONFIG proxy.config.http.cache.ims_on_client_no_cache INT 0
CONFIG proxy.config.http.cache.ignore_server_no_cache INT 1
CONFIG proxy.config.http.cache.ignore_client_cc_max_age INT 1
CONFIG proxy.config.http.cache.cache_urls_that_look_dynamic INT 1

无果;然后在cache.config中加了php强制缓存条目:

dest_domain=. suffix=php       pin-in-cache=600s

仍然无果

0 192.168.1.5 TCP_IMS_HIT/304 181 GET http://user.test.cn/images/mail.gif - NONE - -
62 192.168.1.5 TCP_MISS/200 1074 GET http://user.test.cn/code.php - DIRECT image/png -
0 192.168.1.5 TCP_IMS_HIT/304 182 GET http://user.test.cn/style.css - NONE - -
0 192.168.1.5 TCP_IMS_HIT/304 183 GET http://user.test.cn/reg_style.css - NONE - -
91 192.168.1.5 TCP_MISS/200 13354 GET http://user.test.cn/reg.php - DIRECT text/html -
0 192.168.1.5 TCP_IMS_HIT/304 181 GET http://user.test.cn/images/mail.gif - NONE - -
60 192.168.1.5 TCP_MISS/200 1070 GET http://user.test.cn/code.php - DIRECT image/png -

llzqq 发表于 2013-01-05 13:16

折腾明白了一点:

对于缓存PHP这类的动态文件,PHP文件中必须有控制缓存的代码(如:Cache-Control/Last-Modified等)才能被认为可缓存,否则默认的是Cache-Control:no-cache

奇怪的是,ATS明明是已经定义了忽略服务器端no-cache了啊!?

aaaaaa 发表于 2013-01-08 18:09

如果需要松散的cache机制,修改records.config中的:
   # required headers: three options:
   #   0 - No required headers to make document cachable
   #   1 - "Last-Modified:", "Expires:", or "Cache-Control: max-age" required
   #   2 - explicit lifetime required, "Expires:" or "Cache-Control: max-age"
CONFIG proxy.config.http.cache.required_headers INT 2

这个选项默认是2,即源返回头里必须有Expires或max-age,否则不存

llzqq 发表于 2013-01-08 18:32

aaaaaa 发表于 2013-01-08 18:09 static/image/common/back.gif
如果需要松散的cache机制,修改records.config中的:
   # required headers: three options:
   #   0 - ...


我选的是0,即不需要header啊:

CONFIG proxy.config.http.cache.required_headers INT 0

aaaaaa 发表于 2013-01-08 23:07

dump一份返回头出来看看,或者启用TS的debug,打印出一个完整的miss流程,你会看到为啥的,改
proxy.config.diags.debug.enabled
为1就好

atser 发表于 2013-01-09 18:50

回复 1# llzqq


    试试 ttl-in-cache ,这个不会遵循 Cache-Control, pin-in-cache 会。

http://trafficserver.apache.org/docs/trunk/admin/http-proxy-caching/index.en.html#ForcingObjectCaching

llzqq 发表于 2013-01-10 09:54

回复 6# atser

谢谢各位,不折腾了,还是老老实实地在PHP页面加上缓存控制,这样也更合理了。


   
页: [1]
查看完整版本: ATS 无法缓存PHP了