Назад | Перейти на главную страницу

Может ли браузер отображать изображения (или некоторые другие объекты) из своего кеша без получения кода состояния 304?

Я пытаюсь понять, можно ли избежать запроса некоторых встроенных объектов, загружая их непосредственно из кеша, не спрашивая веб-сервер, действителен ли объект или нет (я не буду отвечать мне веб-сервером с 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 работает лучше всего, когда кеши могут полностью избежать запросов к исходному серверу. Первичный механизм избежания запросов заключается в том, что исходный сервер предоставляет явное время истечения срока действия в будущем, указывая, что ответ МОЖЕТ использоваться для удовлетворения последующих запросов. Другими словами, кеш может возвращать новый ответ без предварительного обращения к серверу.