Я пытаюсь понять, можно ли избежать запроса некоторых встроенных объектов, загружая их непосредственно из кеша, не спрашивая веб-сервер, действителен ли объект или нет (я не буду отвечать мне веб-сервером с 304 статусом http код) Возможно ли? Заголовок срока действия работает таким образом? Как?
Из моего 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. Итак, я думаю, что браузер всегда делает запрос.
Да, вам следует использовать Expires
или Cache-Control: max-age
заголовки, чтобы браузер не мог снова запрашивать объекты. Видеть RFC 2616 для подробностей.
Кэширование HTTP работает лучше всего, когда кеши могут полностью избежать запросов к исходному серверу. Первичный механизм избежания запросов заключается в том, что исходный сервер предоставляет явное время истечения срока действия в будущем, указывая, что ответ МОЖЕТ использоваться для удовлетворения последующих запросов. Другими словами, кеш может возвращать новый ответ без предварительного обращения к серверу.