При обновлении картинки она не меняется :(

LameRoy

Guest
При обновлении картинки она не меняется :(

Дело в том, что когда грузишь на сайт другую картинку, вместо той что была, выводиться старая картинка пока не сделаешь Ctrl+Refresh

В чем дело? как сделать что бы картинка сама сразу показывалась новая????
 

Serjoza

Guest
или попробуй прописать так:
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Pragma: no-cache"); // HTTP/1.0
 

kombo

Новичок
У меня такая же ситуация, но с хидером вариант не подходит т.к. все сделано на одном файле с инклюдами. Можно ли сделать так, чтобы при отображении картинок в конкретном месте проверялось их обновление?
 

kvazar

Guest
А можно сделать 100% не кэширование если разбираться лень :)

добавить к урлу <img src="img.php?rnd=случайное число">


Даже винроут, который славится тем, что кэширует несмотря ни на что - кэшировать перестанет :)
 

kvazar

Guest
А не в winroute случайно проблемма была?


Просто интересно.
 

kombo

Новичок
У меня нет, не в winrout - в IE.
Решил я делать все через refresh - document.location.reload() иначе придется ставить "img.php?rnd=случайное число" во все другие места, что равнозначно 100% не кэшированию(ну это в моем случае), а отслеживать по отдельности обновленные картинки слишком хлопотно, лучше сделаю один раз refresh. Но застопорился на том как сделать refresh один раз, т.к. он превращается в бесконечный цикл. Неужели без регистрации счетчика в сессии не обойтись?
 

kvazar

Guest
Винроут - proxy сервер + NAT - через него в интернет ходют. :)

А вообще так я и не понял о чем речь... Все релоадить эт. издевательство помоему. А вдруг новая прошла и просто у тебя браузер/proxy загоняет (на 90% уверен что в них дело)? Будешь всех мучить релоадом...
 

kombo

Новичок
Не не сервер тут ни причем, делаю на локалке без прокси.
Рефреш хочу чтобы и в других окнах выходили новые картинки,
иначе придется и там запретить кэширование
 

kombo

Новичок
т.е. релоад не для всех а только для того кто редактирует объявление и только в случае когда получена переменная update из предыдущего скрипта
 

kvazar

Guest
Может типа:

<img src="img.php
<?
if (!empty($_POST['update'])) {
echo "?rnd=".случайное число;
}
?>


решит проблемму?
 

kombo

Новичок
я наверно уже закалебал, но не так. Нужен полный релоад, т.к. старая картинка, которая закешировалась до этого в режиме просмотра, который для всех, там тоже обновилась, иначе в режиме просмотра тоже придется ставить rnd, т.е. запретить кеширование для обычных пользователей. Напомню, все делается на одном скрипте с инклюдами, т.е. тот кто редактирует идя в режим просмотра попадает на адрес на котором уже однажды был и ему показываются закешированные картинки.
 

kombo

Новичок
наглость конечно, с точки зрения безопасности, но может можно как нить перезаписывать файлы у пользователя в temporary files. Было бы cool.
 

kvazar

Guest
С советоми я уж промолчу :)

А вот c temp действительно весело.

Кто-то повторно заходит на серьезный сайт и смотрит то что ты ему подсунул? :)


Редирект к тебе, порно и т.п. - вот было бы весело :)
 

kombo

Новичок
пришлось так сделать
<? if(@$update&&@$userfile) echo"<meta http-equiv=\"refresh\" content=\"0;URL='/?ins=edit'\">";?>
 

Yukko

Новичок
выводить изображение в отдельном файле:
<?
header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header ("Cache-Control: no-cache, must-revalidate");
header ("Pragma: no-cache");
header("Content-type: image/gif");
readfile($HTTP_GET_VARS['image']);
?>
<img src=img.php?image=my.jpg>
 

kombo

Новичок
в том то и фишка, что надо не в отдельном. С meta refresh пожалуй оставлю, повстречается он немногим и редко. Пойдет ))).
Появился другой вопрос по resize изображения, вернее его выводу.
пишу так
echo"<img src='/image_resize.php?image=".$image."'...,
где image_resize.php заканчивается на
header("content-type: image/gif");
imagejpeg($dst_img);
Сам imagecopyresized(..) работает нормально, т.е. если
imagejpeg($dst_img, "tmp.jpg"); то файл tmp создается.
Не могу подтянуть это в img src без создания файла.
 
Сверху