Можно ли вообще избежать каких-либо подключений из браузера, если правильно заданы заголовки первого ответа?
/* Caching control */
$age = 3600*24*30; // 30 days
header('Expires: ' . gmdate('D, d M Y H:i:s ', time() + $age) . 'GMT');
Я пытался настроить это, но запрос все равно достигает сервера.
Я нашел это:
Преимущество заголовка Expires заключается в том, что его легко реализовать;в большинстве случаев, однако, если вы не очень организованный человек, вы не будете точно знать, когда будет обновлена данная страница на вашем сайте.Поскольку браузер будет связываться с сервером только после истечения срока действия страницы, нет способа сообщить браузерам, что страница, которую они кэшировали, устарела.Кроме того, вы также теряете некоторую информацию о трафике, посещающем ваш веб-сайт, поскольку браузер не будет связываться с сервером при запросе кэшированной страницы.
Вопрос в том, почемуЗаголовок Expires, который я упоминал выше, не работает?
** Заголовки запроса **
GET /ru/templates/bannerpartial HTTP/1.1
Host: 192.168.1.3
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.12) Gecko/20101026 AlexaToolbar/alxf-1.54 Firefox/3.6.12 FirePHP/0.4
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Cookie: bla-bla-bla
Cache-Control: max-age=0
** Заголовки ответа **
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 16:48:26 GMT
Server: Apache/2.2.14 (Unix) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l PHP/5.3.1 mod_apreq2-20090110/2.7.1 mod_perl/2.0.4 Perl/v5.10.1
X-Powered-By: PHP/5.3.1
Set-Cookie: ZDEDebuggerPresent=php,phtml,php3; path=/
Expires: Thu, 09 Dec 2010 16:48:26 GMT
Cache-Control: must-revalidate
Content-Encoding: gzip
Vary: Accept-Encoding
Content-Length: 118
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html