Жесткое кеширование (200 cache)
Большинство серверов автоматически прописывают этот заголовок при отдаче статических ресурсов. Это позволяет браузеру закачивать новое содержимое только в том случае, если файл реально был изменен. Для этого вместе с запросом GET браузер шлет заголовок:
Сервер отвечает кодом статуса 304 (not modified/not match) и загружает страницу из кеша в следующих случаях:
Для жесткого кеширования достаточно добавить заголовки Expires и Cache-Control: max-age.
Для статических компонентов применяется часто правило "без срока давности", устанавливая заголовок Expires (срок жизни кеша) далеко вперед.
Или же наоборот если мы не хотим кешировать страницу то стоит установить в Expires прошедшую дату.
Для динамических компонентов используется соответствующий метатег управления кешированием (Cache-Control), чтобы браузер знал с какой периодичностью проверять содержимое страницы.
Есть еще один мета-тэг Pragma: no-cache довольно хорошо поддерживаемое соглашение, которому следует большинство web-браузеров. Обнаружив этот тэг, они обычно не кэшируют страницу (хотя никаких гарантий нет, это всего лишь соглашение).
Получив такие заголовки, браузер жестко закеширует документ надолго. Все дальнейшие обращения к документу будут напрямую обслуживаться из кеша браузера, без обращения к серверу. Это самый быстрый способ, потому что никакого запроса на веб-сервере не выполняется.
Для статических компонентов применяется часто правило "без срока давности", устанавливая заголовок Expires (срок жизни кеша) далеко вперед.
Или же наоборот если мы не хотим кешировать страницу то стоит установить в Expires прошедшую дату.
Для динамических компонентов используется соответствующий метатег управления кешированием (Cache-Control), чтобы браузер знал с какой периодичностью проверять содержимое страницы.
Есть еще один мета-тэг Pragma: no-cache довольно хорошо поддерживаемое соглашение, которому следует большинство web-браузеров. Обнаружив этот тэг, они обычно не кэшируют страницу (хотя никаких гарантий нет, это всего лишь соглашение).
Получив такие заголовки, браузер жестко закеширует документ надолго. Все дальнейшие обращения к документу будут напрямую обслуживаться из кеша браузера, без обращения к серверу. Это самый быстрый способ, потому что никакого запроса на веб-сервере не выполняется.
Простое кеширование - HTTP Last-Modified, ETag (304)
Большинство серверов автоматически прописывают этот заголовок при отдаче статических ресурсов. Это позволяет браузеру закачивать новое содержимое только в том случае, если файл реально был изменен. Для этого вместе с запросом GET браузер шлет заголовок:
If-Modified-Since: data,time
Сервер отвечает кодом статуса 304 (not modified/not match) и загружает страницу из кеша в следующих случаях:
- Если браузер послал заголовок "If-Modified-Since: date", в котором date больше либо равна значению заголовка ответа "Last-Modified: date". Т.е. клиент спрашивает: "Есть ли новая версия с момента date? Если нет, верни мне 304 и сэкономь трафик. Если есть, отдай мне тело страницы".
- Если браузер послал заголовок "If-None-Match: hash", где hash совпадает со значением заголовка ответа "ETag: hash". Т.е. клиент спрашивает: "Отличается ли текущая версия страницы от той, что я запросил в прошлый раз? Если нет, верни мне 304 и сэкономь трафик. Если да, отдай тело страницы".
Отличие в том что в etag нет привязки ко времени и в хеше мы можем передавать все что угодно.
Срок жизни браузерного кеша - сессия (до тех пор пока браузер не перезапустить)
304 это не так быстро, как 200 (cache), тк запрос все равно передается на веб-сервер, но сервер не должен отправить содержимое файла.
Комментариев нет:
Отправить комментарий