ATS(Apache Traffic Server)不缓存

ATS(Apache Traffic Server)不缓存

我正在尝试使 ATS 缓存返回我的 UWSGI 应用程序,该应用程序当前与 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

可以使用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

我的cache.config:

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

答案1

最有可能的问题是您的源未设置预期的 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

答案2

您还可以通过以下方式强制将内容放入缓存:

例如,你可以设置 cache.config 来包含

dest_domain=mysite.com ttl-in-cache=10m

结合required_headers使用0,这将起作用即使你无法控制原产地

答案3

发现了...正如 James Peach 指出的那样,我必须允许所有请求都可以缓存,但此外,响应必须发送 Vary 标头

相关内容