我正在尝试让我的 UWSGI 应用程序的 ATS 缓存返回,该应用程序当前与 ATS 本身在同一台机器上运行。
我不明白为什么 ATS 总是将我的请求转发给 UWSGI 并且不缓存结果。我在从源代码编译的 ubuntu 14.04 上使用 ATS 5.1.1,并遵循此处描述的教程:http: //daemonkeeper.net/735/apache-trafficserver-the-better-web-cache/
使用 curl 发出测试请求,我总是在 Via 标头中收到这些诊断信息:
uScMsSf pSeN:t cCMi p sS
WHich 可以使用 traffic_via 解码为:
Proxy request results:
Request headers received from client: simple request (not conditional)
Result of Traffic Server cache lookup for URL: miss (a cache "MISS")
Response information received from origin server: served
Result of document write-to-cache: no cache write performed
Proxy operation result: served
Error codes (if any): no error
Operational results:
Tunnel info: no tunneling
Cache-type and cache-lookup cache result values: cache / cache miss (url not in cache)
ICP status: no icp
Parent proxy connection status: no parent proxy
Origin server connection status: connection opened successfully
有人可以帮我理解,为什么结果没有被缓存?
我的 remap.config:
map http://trafficserver_build:8080 http://127.0.0.1:8888
我的缓存配置:
url_regex=.* revalidate=10m
我的 storage.config(默认提供):
var/trafficserver 256M
日志请求状态:
/opt/ts/bin/traffic_logcat -f /opt/ts/var/log/trafficserver/squid.blog 1415307115.252 0 10.0.3.28 TCP_MISS/200 258 HEAD http://127.0.0.1:8888/ - DIRECT/127.0.0.1 text/html 1415307127.721 0 10.0.3.28 TCP_MISS/200 258 HEAD http://127.0.0.1:8888/ - DIRECT/127.0.0.1 text/html 1415307171.141 0 10.0.3.28 TCP_MISS/200 258 HEAD http://127.0.0.1:8888/ - DIRECT/127.0.0.1 text/html 1415307176.480 0 10.0.3.28 TCP_MISS/200 258 HEAD http://127.0.0.1:8888/ - DIRECT/127.0.0.1 text/html
最可能的问题是您的源没有设置预期的 HTTP 标头以使响应可缓存。相关的 Traffic Server 设置是 proxy.config.http.cache.required_headers,默认情况下非常严格地要求响应中的 Expires 或 Cache-Control 标头。
https://trafficserver.readthedocs.org/en/latest/reference/configuration/records.config.en.html#proxy-config-http-cache-required-headers
您还可以通过以下方式强制内容进入缓存:
proxy.config.http.cache.required_headers
为0
;和因此,例如,您可以将 cache.config 设置为包含
dest_domain=mysite.com ttl-in-cache=10m
结合
required_headers
of ,即使您不控制原点0
,这也将起作用找到了......正如 James Peach 指出的那样,我必须允许所有请求都是可缓存的,但此外响应必须发送 Vary header。