За последние 24 часа нас посетили 18834 программиста и 1731 робот. Сейчас ищут 1355 программистов ...

Как можно затавить фф кешировать картинки

Тема в разделе "Прочее", создана пользователем kostyl, 11 ноя 2009.

  1. kostyl

    kostyl Guest

    Подсскажите какие заголовки отправить для браузеров, особенно для фф что бы он закешировал изображение, которое отдает скрипт с параметрами.
    Посылаю:
    Код (Text):
    1.  
    2. header("Expires: Mon, 1 Jul 2030 00:00:00 GMT");
    3. header('Cache-Control: private');
    ие хавает тему, а фф не хочет... урод.

    И раз уж я пишу, то каким стилем списки в хтмл делаются горизонтально?
     
  2. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    max-age добавь и cache-control: public
     
  3. kostyl

    kostyl Guest

    это же вроде запроса зоголовок? cache-control: public - на прокси не хочется оставлять...
     
  4. kostyl

    kostyl Guest

  5. kostyl

    kostyl Guest

    неа, пишу:
    Код (Text):
    1. header("Expires: Mon, 1 Jul 2030 00:00:00 GMT");
    2. header('Cache-Control: public, max-age=31536000, s-maxage=31536000');
     
  6. kostyl

    kostyl Guest

    нихера не хочет и писец...
     
  7. kostyl

    kostyl Guest

    наверно фаирбаг гонит да?
     
  8. kostyl

    kostyl Guest

    Ставлю header('Pragma: ');
    Начинает кешировать и то только в одном окне. капец.
     
  9. kostyl

    kostyl Guest

    блин и опера тудаже - ие рулит...
     
  10. Alost

    Alost Активный пользователь

    С нами с:
    7 фев 2009
    Сообщения:
    335
    Симпатии:
    0
    Адрес:
    Город вокруг невы
    Я вот так кеширование сделал
    Код (Text):
    1. <IfModule mod_headers.c>
    2. <Files ~ ".(jpg|jpeg|gif|png|js|css)">
    3. Header append Cache-Control "public"
    4. </Files>
    5. </IfModule>
    6. # Заголовок Expires
    7. <IfModule mod_expires.c>
    8. <Files ~ ".(jpg|jpeg|gif|png|js|css)">
    9. ExpiresActive On
    10. ExpiresDefault "access plus 1 days"
    11. </Files>
    12. </IfModule>
     
  11. kostyl

    kostyl Guest

    думаю поможет изучение заголовков ответов с твиттера и т.п. )))
     
  12. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    PHP:
    1. <?php
    2. $time = gmdate('r');
    3. $expires = gmdate('r',time()+5);
    4. $time_stt = date('H:i:s');
    5. $max_age = 3;
    6.  
    7. if(isset($req["If-Modified-Since"])){
    8.         $if_mod_since_stt = strtotime($req["If-Modified-Since"]);
    9.         if (time() - $if_mod_since_stt <= $max_age){
    10.                 header("HTTP/1.1 304 Not Modified");
    11.                 exit;
    12.         }
    13.  
    14. }
    15.  
    16.  
    17. header("Cache-Control: public, max-age=5, must-revalidate");
    18. header("Expires: $expires");
    19. header("Last-Modified: $time");
    20. ?>
    21. <pre>
    22. <?php
    23. print_r($req);
    24. print($time_stt).("time<br />");
    25. ?>
    26.  
    Пробуйте этот код. Это выведено на лекции со студентами до полноценного рабочего состояния в IE, Chrome и FF.
     
  13. kostyl

    kostyl Guest

    Psih
    Спасибо, попробую, я так не пробовал ибо хочу, чтобы браузер вообще запросы не отправлял!
     
  14. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    kostyl
    Настрой кеширование на уровне WEB сервера. Они обычно правильно отправляют заголовки. Другое дело, что браузеры в зависимости от пользовательских настроек и внутренних багов / странной логики разработчиков интерпретируют заголовки по своему и делают не правильно. У нас на лекции ситуация была, когда у 6-ти человек IE8 всё нормально кеширует, а у седьмого кеш вообще не работал - всегда отправлял запросы на PHP скрипт. Настройки идентичны, винда идинтична. Разница - в билдах (видимо на этом компе апдейты ушли вперёд или отстали немного). И что бы мы не делали - заставить его работать не смогли. Человек потом дома проверял свой код - у него дома работало в IE как часы. Так что иногда просто не сделать нормально (либо нужно много гуглить и делать какие-то хаки) - это баги в браузерах.
     
  15. buran

    buran Активный пользователь

    С нами с:
    21 ноя 2009
    Сообщения:
    2
    Симпатии:
    0
    В самом деле. в IE все работает, в Mozilla FF - Не работает, в Опере - через раз

    От чего это зависит?
     
  16. buran

    buran Активный пользователь

    С нами с:
    21 ноя 2009
    Сообщения:
    2
    Симпатии:
    0
    Смотрю на приходящие заголовки оперы
    Код (Text):
    1. Array
    2. (
    3.     [User-Agent] => Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.2.15 Version/10.01
    4.     [Host] => ***
    5.     [Accept] => text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
    6.     [Accept-Language] => ru-RU,ru;q=0.9,en;q=0.8
    7.     [Accept-Charset] => iso-8859-1, utf-8, utf-16, *;q=0.1
    8.     [Accept-Encoding] => deflate, gzip, x-gzip, identity, *;q=0
    9.     [Pragma] => no-cache
    10.     [Cache-Control] => no-cache
    11.     [Connection] => Keep-Alive, TE
    12.     [TE] => deflate, gzip, chunked, identity, trailers
    13. )
    Почему опера включает в запрос заголовки Pragma и Cache-Control ?
     
  17. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Не указывай ей, сучка (с)