Как я могу проверить кеширование и его кеш? - PullRequest
6 голосов
/ 19 марта 2010

В PHP я пытаюсь украсть страницу из книги игр Rails (см. «Использование меток времени актива» здесь ):

По умолчанию Rails добавляет активы метки времени для всех путей активов. это позволяет установить срок действия кэша дата актива далеко в будущее, но все же сможет мгновенно лишить законной силы, просто обновляя файл (и, следовательно, обновление отметка времени, которая затем обновляет URL поскольку временная метка является частью этого, который в свою очередь перебивает кэш).

Это ответственность Интернета сервер, который вы используете, чтобы установить далекое будущее срок действия активов кэша, которые вам нужно воспользоваться этим особенность. Вот пример для Apache:

  # Asset Expiration
  ExpiresActive On
  <FilesMatch "\.(ico|gif|jpe?g|png|js|css)$">
    ExpiresDefault "access plus 1 year"
  </FilesMatch>

Если вы посмотрите на источник для страницы Rails, вы увидите, что они означают: путь к таблице стилей может быть "/stylesheets/scaffold.css?1268228124", где числа в конце - это отметка времени, когда файл последний раз обновлялся.

Так что это должно работать так:

  1. Браузер говорит «дай мне эту страницу»
  2. Сервер говорит: «Здесь, и, кстати, эта таблица стилей с именем scaffold.css?1268228124 может храниться в кэше в течение года - она ​​не изменится».
  3. При перезагрузке браузер говорит: «Я не запрашиваю этот файл css, потому что моя локальная копия все еще в порядке».
  4. Месяц спустя вы редактируете и сохраняете файл, который изменяет временную метку, что означает, что файл больше не называется scaffold.css?1268228124, поскольку номера меняются.
  5. Когда браузер видит это, он говорит: «Я никогда не видел этот файл! Дайте мне копию, пожалуйста. Кеш «обанкротился».

Я думаю, это блестяще. Поэтому я написал функцию, которая выплевывает теги таблиц стилей и JavaScript с временными метками, добавленными к именам файлов, и настроил Apache с помощью приведенного выше выражения.

Теперь: как узнать, работают ли кэширование и очистка кэша?

Я проверяю свои страницы с помощью двух плагинов для Firebug: Yslow и Google Page Speed. Оба, кажется, говорят, что мои файлы кэшируются: проверяются «Добавить заголовки истечения» в Yslow и «использовать кэширование браузера» в Page Speed.

Но когда я смотрю на Page Speed ​​Activity, я вижу много запросов и ожиданий, и никаких «попаданий в кеш».

Если я меняю свою таблицу стилей и перезагружаюсь, я сразу же вижу изменение. Но я не знаю, связано ли это с тем, что браузер вообще никогда не кэшировался или потому, что кеш отключен.

Как я могу сказать?

Обновление: все работает!

Если кому-то интересно, я просто написал пост в блоге, объясняющий детали .

1 Ответ

3 голосов
/ 19 марта 2010

В firebug вы увидите 304 Not Modified для кэшированных страниц.

Убедитесь, что вы реализовали эти меры в Apache - я обнаружил, что вам нужна комбинация настроек для размещения всех браузеров.

...