Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Картинки и кеш

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
JustUserR
Отправлено: 27 Августа, 2009 - 21:08:51
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Честно сказать никогда не любил кэш картинок и другого сожержимого сайта но тут возникла проблема и я не зная как решить ее напрямую
Имеется PHP-скрипт который получает ID картинки запрашивает из базы ее mime-тип и двоичное содержимое и выводит ее предварив соответствующим заголовком
Мне нужно чтобы всего навсего браузер не кэшировал эту картинку и каждый раз загружал ее заново - пробовал ставить и pragma и дату обновленая файла - но все равно грузится старая
Я конечно много вариантов walkaroundов на стороне страницы которая запрашивает эту картинку - напрмер вызывать ее с параметром типа &rnd=rand_num где rand_num случайно сгернерированное число или другие JS-хитростями - оно то конечно работает
Но меня интересует как именно сделать так чтобы браузер сам по факту приняв картинку (Напрмер если бы я просто ввел URL картинки в адресной строке) качал ее заново


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
EuGen Администратор
Отправлено: 27 Августа, 2009 - 22:23:12
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Вообще говоря, от браузера тоже есть зависимость. Если в нем стоит уровень "никогда не запрашивать обновленную страницу с сервера" (или как там оно называется, скажем, в IE), то он всегда будет загружать со своего локального кэша.
В моей практике также были случаи, когда промежуточный кэширующий прокси сводил на нет все усилия программиста с серверной стороны. (Особенно плохо, если не знать о существовании оного)
Ну а вообще, с отдачей картинки скриптом никаких трудностей у меня скажем никогда не было (как пример, рисунок для CAPTCHA - всегда создается новый просто по нажатию F5). Так что "напрямую", как Вы выразились, все должно работать корректно.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
JustUserR
Отправлено: 28 Августа, 2009 - 11:43:03
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




EuGen Спасибо за информацию но я позволю себе уточнить некоторый момент
Итак у нас есть PHP-скрипт генерирующий картинку (Пускай картинка будет почти всегда разная - типа капчи) и чтобы получить картинку надо запросить адрес типа http://mysite[dot]ru/img.php?img=10 (Несмотря на то что число 10 скажем постоянное но при этом картинка выдаваемая по такому запросу может быть совершенно разная - это важно)
Если я ввожу в строку браузера этот адрес и жму F5 то все отлично работает и рисуются разные картинки
Но вот беда - если создать страницу и сделать на этой странице <img src="http://mysite.ru/img.php?img=10"> то эта картинка закачается один раз и никогда не обновится - единственно возможное обновление это средствами JS
Я был уверен что браузеры не настолько вредные - я думал что если вывести заголовок Last-Modified текущее время и устанровить pragma no-cache то никто не будет кеэировать - а тут хрен
Цитата:
В моей практике также были случаи, когда промежуточный кэширующий прокси сводил на нет все усилия программиста с серверной стороны. (Особенно плохо, если не знать о существовании оного)
Остается надеяться только на это потому чо действительно гдето может висеть такая кэширущая прокси


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
valenok Модератор
Отправлено: 28 Августа, 2009 - 17:49:53
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




И так не работает?

header("Cache-Control: no-cache");
header("Expires: -1");

Тогда видимо дело в настройках браузера или прокси по пути.


-----
Truly yours, Sasha.
 
My status
 Top
Roler
Отправлено: 28 Августа, 2009 - 17:52:10
Post Id



Посетитель


Покинул форум
Сообщений всего: 458
Дата рег-ции: Авг. 2008  
Откуда: Россия


Помог: 1 раз(а)




Цитата:
<img src="http://mysite.ru/img.php?img=10">

Капчи все так и устроены и работают. Это точно не сервер виноват.
 
 Top
JustUserR
Отправлено: 28 Августа, 2009 - 19:26:02
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Цитата:
И так не работает?
header("Cache-Control: no-cache");
header("Expires: -1");
Неа и так не работает + еще пробовал добавлять must-revatidate и pragma no-cach и тп но все без толку

Цитата:
Тогда видимо дело в настройках браузера или прокси по пути.
Цитата:
Капчи все так и устроены и работают. Это точно не сервер виноват.
Да уж уже начал ковырть - похоже виноваты и тот и другой Улыбка

(Отредактировано автором: 28 Августа, 2009 - 19:26:31)



-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
EuGen Администратор
Отправлено: 28 Августа, 2009 - 20:39:07
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




У Вас на сервере также может стоять неверно настроенный nginx - кэширующий подобную "статику".
Нужно смотреть логи всех демонов - nginx (если есть), apache. Поставьте также Firebug (для Mozilla Firefox, если используете), и смотрите ответы сервера (по-моему, в разделе "Сеть" - "Net")
Ну и проверьте, нет ли кэширующего прокси. Такое бывает.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
JustUserR
Отправлено: 29 Августа, 2009 - 20:48:57
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




EuGen Кстати спасибо за мысль - я пользуюсь IE и решил попробовать для проверки Proximion чтобы посмотреть какие в действительности запросы идут - и как ни странно ни GET и HEAD (Для проверки даты обновления к примеру) запросов на "картинку" вообще не идет На сервере Apache в логах тоже не видать запросов на "картинку" с моего IP
Честно сказать пока так и не понял почему так происходит и оставил свой JS-код для обновление картинки
Буду выяснять дальше - если появятся интересные подробности обящательно расскажу Улыбка
Всем спасибо за помощь


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
EuGen Администратор
Отправлено: 29 Августа, 2009 - 23:20:00
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Если у Вас в логах нет обращений на сервер за картинкой, то, значит, существует некий промежуточный кэш (возможно, и Ваш локальный), который отдает картинку "вместо сервера".
Насчет прокси - если он не прозрачный, попробуйте сделать traceroute (для MS Win аналогом служит tracert), можете увидеть этот узел. Но только если он действительно не прозрачный.
Если же прозрачный, помочь может ping. Сравнивая TTL (Time to live) пакетов из разных сегментов сети, можно обнаружить подобный узел. При этом, правда, потребуется иметь доступ к различным сегментам одной и той же сети.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB