Назад | Перейти на главную страницу

ATS (сервер трафика Apache) не кэширует

Я пытаюсь вернуть кэш ATS моего приложения UWSGI, которое в настоящее время работает на том же компьютере, что и сам ATS.

Я не понимаю, почему ATS всегда перенаправляет мои запросы в UWSGI и не кэширует результаты. Я использую ATS 5.1.1 на ubuntu 14.04, скомпилированном из исходных кодов, и следовал руководству, описанному здесь: 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

Наиболее вероятная проблема заключается в том, что ваш источник не устанавливает ожидаемые заголовки HTTP, чтобы сделать ответ кешируемым. Соответствующим параметром сервера трафика является 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

Вы также можете принудительно поместить контент в кеш:

Так, например, вы можете установить cache.config, чтобы он содержал

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

В сочетании с required_headers из 0, это будет работать даже если вы не контролируете происхождение

Обнаружил ... Как указывает Джеймс Пич, мне пришлось разрешить кэширование всех запросов, но, кроме того, ответ должен отправлять заголовок Vary.