3
У меня проблема с mod_cache и ETags. Вот мой сценарий:mod_cache + ETag: Apache не отвечает 304 клиенту
Окружающая среда: Firefox, Apache 2.2.22 (Mac OSX по умолчанию), любой Web App, Apache является прокси для Web App
Исходное состояние:
- Browser имеет (истек) версия кэш DOC/AAA, ETag = 123
- Apache имеет (с истекшим сроком) версии кэша DOC/AAA, ETag = 123
Сценарий:
- запросы браузера/ааа, If-None-Match: 123
- Apache запросов/ааа, If-None-Match: 123 из Web App
- Web App возвращает 304
- Apache возвращает его закэшированное версия для браузера (200)
Не следует ли Apache возвращать 304 браузеру?
Дополнительная информация:
- если Apache не имеет кэшированные версии/ааа, он пересылает ETag в Web App, получить 304 и возвращает 304 в браузер
- работает с Last-Modified/If -Modified-с вместо ETags работает (после получения 304 из веб-приложения, Apache возвращает 304 в браузер)
намного проще сценарий:
- Apache версии не истек (ETag: 123) - ему не нужно, чтобы получить обновления от Web App
- GET/ааа, If-None-Match: 123
- Ответ: 200 (вместо 304)
апач конф
CacheRoot /private/var/log/apache2/cache/
CacheEnable disk/
CacheDirLevels 5
CacheDirLength 3
CacheIgnoreCacheControl On
CacheIgnoreHeaders Set-Cookie
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass/ajp://localhost:8009/ retry=0
ProxyPassReverse/ajp://localhost:8009/
ProxyPreserveHost on
запрос/ответ заголовки:
GET/HTTP/1.1
Accept: */*
If-None-Match: 123456
HTTP/1.1 200 OK
Date: Tue, 01 Oct 2013 14:01:16 GMT
ETag: 123456
Expires: Tue, 01 Oct 2013 14:30:55 GMT
Cache-Control: max-age=1800
Content-Language: en-US
Age: 21
Content-Length: 20186
Content-Type: text/html;charset=UTF-8
Вы можете добавить соответствующие конфигурации? И точные заголовки всех запросов и ответов, которые производят это? –
У меня такая же проблема в течение очень долгого времени, и я не смог ее подобрать :( –
Вы используете gzip (а если нет, то почему?)?Нет, если ваши заголовки запроса/ответа, но не уверены, что это сокращенный набор. Если да, попробуйте отключить Etags, и он должен работать, поскольку в Apache есть ошибка с Etags и Gzip. Объясним больше в ответе, если это окажется так. –