Возникли проблемы с получением браузера для кеширования контента - PullRequest
0 голосов
/ 07 марта 2011

Извините, что это похоже на ряд других вопросов, но я просмотрел все похожие посты, которые вижу, но они, похоже, не имеют такой же проблемы, как я; -)

Проблема в том, что я не могу заставить клиентское кэширование .js, .css и изображений работать на моих серверах Apache2 (у меня есть как Ubuntu Apache / 2.2.8, так и WAMP Apache под Windows).

При настройках по умолчанию я получаю хорошее кэширование под управлением сервера в стиле ETag (304 ответа), но если я отключу это, добавив команды Header Unset в мой файл конфигурации виртуального хоста, а затем добавлю директивы Caching (см. Ниже)Похоже, что браузер не соблюдает его.

Я вижу, используя Firebug, что браузер знает, что кэшированный файл действителен еще пару часов, но все равно запрашивает его.

Любые советы о том, как отладить это, будут приветствоваться.

Соответствующая часть конфигурации хоста показана ниже:

<VirtualHost *:80>
    DocumentRoot "C:/Projects/A2C/branches/CR7"
    ServerName *
    ServerAlias localhost ecomsvr0.dmclub.net
    ErrorLog "c:\log\a2c.log"
    CustomLog "c:\log\a2c-access.log" common
   <Directory "c:\projects\A2C\branches\CR7">
      Options Indexes FollowSymLinks MultiViews
      AllowOverride all
      Order allow,deny
      Allow from all
    ExpiresDefault A36000
    Header Set Cache-Control "max-age=7200"
    Header Unset Etag
    Header Unset Last-Modified
   </Directory>
</VirtualHost>

1 Ответ

1 голос
/ 08 марта 2011

Меня поражает, что вы не отправляете валидатор (Last-Modified или ETag). Хотя они не являются обязательными, я настоятельно рекомендую отправить их, чтобы браузеры могли выполнять условные запросы. RFC 2616 гласит: «Серверы HTTP / 1.1 ДОЛЖНЫ отправлять Last-Modified, когда это возможно». Это не должно быть основной причиной вашей проблемы, но вполне может быть.

Поэтому я предлагаю убрать строку "Заголовок сброшен последней измененной" и проверить еще раз.

Обратите внимание, что ваш Expires - это время доступа плюс 36000 с, а максимальное время - 7200 с, что не имеет смысла. Браузеры, понимающие новую директиву Cache-Control (все новые браузеры), будут стремиться к максимальному возрасту.

Если добавление Last-Modified не работает, не могли бы вы опубликовать полные заголовки ответа, отправленные вашим сервером? Например, перейдите на http://redbot.org/ и запустите эту проверку на своем сервере и опубликуйте результаты. Это также поможет определить вашу проблему.

...