2013-10-01 2 views
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 
+0

Вы можете добавить соответствующие конфигурации? И точные заголовки всех запросов и ответов, которые производят это? –

+0

У меня такая же проблема в течение очень долгого времени, и я не смог ее подобрать :( –

+0

Вы используете gzip (а если нет, то почему?)?Нет, если ваши заголовки запроса/ответа, но не уверены, что это сокращенный набор. Если да, попробуйте отключить Etags, и он должен работать, поскольку в Apache есть ошибка с Etags и Gzip. Объясним больше в ответе, если это окажется так. –

ответ

Смежные вопросы