Может ли браузер отображать изображения (или некоторые другие объекты) из своего кэша без получения кода состояния 304?
Я пытаюсь понять, можно ли избежать запроса некоторых встроенных объектов, загружая их непосредственно из кэша, не спрашивая веб-сервер, действителен ли объект или нет (я не отвечаю на запрос веб-сервера со статусом 304 http код) это возможно? Работает ли заголовок expire для этого способа? Как?
Из моего htaccess.
# cache images/pdf docs for 10 days
<FilesMatch "\.(ico|pdf|jpg|jpeg|png|gif|js)$">
Header set Expires "Mon, 31 Dec 2035 12:00:00 gmt"
</FilesMatch>
# cache html/htm/xml/txt diles for 2 days
<FilesMatch "\.(html|htm|xml|txt|xsl)$">
Header set Cache-Control "max-age=7200"
</FilesMatch>
</IfModule>
Аналогичная операция с функцией заголовка php, а также в httpd.conf.
Я проверяю результаты в apache access.log. Каждый раз, когда я обновляю страницу в файле access.log, появляется запрос 304. Итак, я думаю, что браузер всегда делает запрос.
1 ответ
Да, вы должны использовать Expires
или же Cache-Control: max-age
заголовки, чтобы браузер не запрашивал объекты снова. См. RFC 2616 для деталей.
HTTP-кэширование работает лучше всего, когда кэши могут полностью избежать запросов к исходному серверу. Основной механизм, позволяющий избежать запросов, заключается в том, что исходный сервер должен предоставлять явное время истечения в будущем, указывая, что ответ МОЖЕТ использоваться для удовлетворения последующих запросов. Другими словами, кеш может вернуть новый ответ без предварительного обращения к серверу.