Подсскажите какие заголовки отправить для браузеров, особенно для фф что бы он закешировал изображение, которое отдает скрипт с параметрами. Посылаю: Код (Text): header("Expires: Mon, 1 Jul 2030 00:00:00 GMT"); header('Cache-Control: private'); ие хавает тему, а фф не хочет... урод. И раз уж я пишу, то каким стилем списки в хтмл делаются горизонтально?
неа, пишу: Код (Text): header("Expires: Mon, 1 Jul 2030 00:00:00 GMT"); header('Cache-Control: public, max-age=31536000, s-maxage=31536000');
Я вот так кеширование сделал Код (Text): <IfModule mod_headers.c> <Files ~ ".(jpg|jpeg|gif|png|js|css)"> Header append Cache-Control "public" </Files> </IfModule> # Заголовок Expires <IfModule mod_expires.c> <Files ~ ".(jpg|jpeg|gif|png|js|css)"> ExpiresActive On ExpiresDefault "access plus 1 days" </Files> </IfModule>
PHP: <?php $req = apache_request_headers(); $time = gmdate('r'); $expires = gmdate('r',time()+5); $time_stt = date('H:i:s'); $max_age = 3; if(isset($req["If-Modified-Since"])){ $if_mod_since_stt = strtotime($req["If-Modified-Since"]); if (time() - $if_mod_since_stt <= $max_age){ header("HTTP/1.1 304 Not Modified"); exit; } } header("Cache-Control: public, max-age=5, must-revalidate"); header("Expires: $expires"); header("Last-Modified: $time"); ?> <pre> <?php print_r($req); print($time_stt).("time<br />"); ?> Пробуйте этот код. Это выведено на лекции со студентами до полноценного рабочего состояния в IE, Chrome и FF.
kostyl Настрой кеширование на уровне WEB сервера. Они обычно правильно отправляют заголовки. Другое дело, что браузеры в зависимости от пользовательских настроек и внутренних багов / странной логики разработчиков интерпретируют заголовки по своему и делают не правильно. У нас на лекции ситуация была, когда у 6-ти человек IE8 всё нормально кеширует, а у седьмого кеш вообще не работал - всегда отправлял запросы на PHP скрипт. Настройки идентичны, винда идинтична. Разница - в билдах (видимо на этом компе апдейты ушли вперёд или отстали немного). И что бы мы не делали - заставить его работать не смогли. Человек потом дома проверял свой код - у него дома работало в IE как часы. Так что иногда просто не сделать нормально (либо нужно много гуглить и делать какие-то хаки) - это баги в браузерах.
В самом деле. в IE все работает, в Mozilla FF - Не работает, в Опере - через раз От чего это зависит?
Смотрю на приходящие заголовки оперы Код (Text): Array ( [User-Agent] => Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.2.15 Version/10.01 [Host] => *** [Accept] => text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1 [Accept-Language] => ru-RU,ru;q=0.9,en;q=0.8 [Accept-Charset] => iso-8859-1, utf-8, utf-16, *;q=0.1 [Accept-Encoding] => deflate, gzip, x-gzip, identity, *;q=0 [Pragma] => no-cache [Cache-Control] => no-cache [Connection] => Keep-Alive, TE [TE] => deflate, gzip, chunked, identity, trailers ) Почему опера включает в запрос заголовки Pragma и Cache-Control ?