Может ли браузер отображать объекты из своего кэша без получения кода состояния 304? - PullRequest
0 голосов
/ 20 июня 2011

Я пытаюсь понять, возможно ли избежать запроса некоторых встроенных объектов, загружая их непосредственно из кэша, не спрашивая веб-сервер, действителен ли объект или нет (я не хочу, чтобы ответ веб-сервера мне304 http код состояния) Возможно ли?Работает ли заголовок expire таким образом?Как?


Конечно: Запрос:

<script scr="my_js.php"></script> 

Ответ:

<? header("HTTP/1.1 304 Not Modified");
header("Expires: Mon, 31 Dec 2035 12:00:00 gmt");
header("Cache-Control: max-age=".(60*60*24*365)); 
echo "//this is a simpe example"; ?>

Решено

Браузер загружает ресурсы изего кеш, не спрашивая их на веб-сервере только при первом открытии страницы ( новая вкладка или новое окно браузера ).

В другое время браузер ВСЕГДА запрашивает у сервера информацию о ресурсах, сохраненных в его кеше.Затем ответ веб-сервера с 200 или 301.

Ответы [ 2 ]

2 голосов
/ 20 июня 2011

Да, установка заголовка удаленного срока действия и актив не будут загружаться снова до истечения этого срока.

Если вы удалите заголовок Last-Modified и ETag, вы полностью исключите If-Modified-Так как и запросы If-None-Match и их 304 неизмененных ответа, поэтому файл будет оставаться в кэше без проверки обновлений до тех пор, пока заголовок Expires не покажет, что доступно новое содержимое!*.

0 голосов
/ 21 июня 2011

Из моего доступа ...

<IfModule mod_headers.c>

    Header unset Pragma
    FileETag None
    Header unset ETag

    # 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"
      Header unset ETag  
      Header unset Last-Modified

    </FilesMatch>

    # cache html/htm/xml/txt diles for 2 days
    <FilesMatch "\.(html|htm|xml|txt|xsl)$">
      Header set Cache-Control "max-age=7200, must-revalidate"
    </FilesMatch>

</IfModule>

кажется, что это не работает .... например, сетевая панель firebug всегда показывает мне 200 кодов состояния, а файл access.log сообщает, что браузер запрашивает внешние объекты.

...