как использовать заголовки кэша управления?

Я загрузил трассировщик скорости Google для Google Chrome, чтобы видеть, как мой сайт делает мудрую производительность, и это говорит мне, что я должен позволить кэшироваться для определенных файлов как мой style.css, изображения, и т.д.

Я считал, что ниже кода php должен сказать браузерам кэшировать содержимое HTML. Я записал быструю php страницу с несколькими изображениями на нем и придерживался ниже кода наверху (прежде чем заголовки будут отправлены) протестировать, чтобы видеть, как это работало.

Header("Cache-Control: public, max-age=3600, must-revalidate");

Когда я возвращаюсь к анализу трассировщика скорости, он говорит...

Сводка От Кэша: ложь

Прагма Заголовков запроса: никакое Управление Кэша кэшем: max-age=0

но под Заголовками Ответа... Управление кэша: общественность, max-age=3600, должна - подтверждать (точно, что я указал),

Я немного смущен, что продолжается...? Когда это говорит от кэша: ложь, которая означает от кэша сервера а не кэша клиента?

8
задан payling 7 April 2010 в 17:52
поделиться

3 ответа

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

Прочтите фантастический учебник по кэшированию Марка Ноттингема для получения дополнительной информации. В качестве примера реализации PHP вы можете использовать мой код .

Просмотрите $ _ SERVER ['HTTP_IF_NONE_MATCH'] и $ _ SERVER ['HTTP_IF_MODIFIED_SINCE'] для проверки клиентов. И имейте в виду, что оба заголовка могут содержать вредоносный код. ;)

4
ответ дан 6 December 2019 в 00:06
поделиться

Когда он говорит из кеша: false, означает ли это значение из кеша сервера, а не из кеша клиента?

^ Это относится к кешу клиента.

Настройка кеширования таким образом распространяется на ваши файлы PHP, но вам нужно будет реализовать что-то еще на стороне сервера для кеширования ваших изображений, CSS, скриптов и т. Д. Это можно сделать с помощью .htaccess , если ваш сервер это поддерживает.

Например, это то, что я использую в моем файле .htaccess для пары сайтов.

<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)(\.gz)?$">
  Header set Expires "Thu, 15 Apr 2012 20:00:00 GMT"
  Header unset ETag
  FileETag None
</FilesMatch>
0
ответ дан 6 December 2019 в 00:06
поделиться

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

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

С.

0
ответ дан 6 December 2019 в 00:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: