Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Как заставить картинки обновиться?


Автор: Роман 12.6.2008, 15:54
Скрипт выводит список картинок. При определенной команде скрипт делает парное переименование картинок.
Например было 1.jpg 2.jpg а становится 2.jpg 1.jpg но браузер кэширует картинки и не показывает изменений на странице.
Как решить эту проблему?

Автор: MoLeX 12.6.2008, 16:08
Роман, достаточно после картинки прикрепить мусор

Автор: Feldmarschall 12.6.2008, 16:22
Роман, он имел в виду после имени картинки. добавить квери стринг со случайным содержимым

Автор: MoLeX 12.6.2008, 16:28
Цитата(Feldmarschall @  12.6.2008,  16:22 Найти цитируемый пост)
Роман, он имел в виду после имени картинки.

 smile 
получится чтото такое
Код

echo "<img src=\"http://site.com/images/1.jpg?".time()."\">";

Автор: Роман 12.6.2008, 16:30
Я это знаю, но в данном случае этого делать нельзя.
Нужно как-то через параметры кэширования.

Автор: MoLeX 12.6.2008, 16:32
эм?
Код

    Header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); //Дата в прошлом 
    Header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 
    Header("Pragma: no-cache"); // HTTP/1.1 
    Header("Last-Modified: ".gmdate("D, d M Y H:i:s")."GMT");


Добавлено через 16 секунд
а так сойдет?

Добавлено через 52 секунды
а в самом html шаблоне говорил браузеру чтобы он не кешировал?
Код

<META HTTP-EQUIV="Pragma" CONTENT="no-cache">

Автор: Роман 12.6.2008, 16:36
MoLeX, 
Так и делаю. Но идеально было бы обновление не всей страницы, а только нужной части.

Автор: MoLeX 12.6.2008, 16:51
ИМХо тока первый вариант, после картинки мусор. по краяней мере я не знаю как больше еще

Добавлено через 1 минуту и 33 секунды
Цитата(Роман @  12.6.2008,  15:54 Найти цитируемый пост)
При определенной команде скрипт делает парное переименование картинок.

может после этой команды и посылать хиадер?

Автор: Роман 12.6.2008, 16:58
Странно, но у меня уже и это не работает :(
Код

    Header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); //Дата в прошлом 
    Header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 
    Header("Pragma: no-cache"); // HTTP/1.1 
    Header("Last-Modified: ".gmdate("D, d M Y H:i:s")."GMT");


Добавлено через 2 минуты и 41 секунду
Цитата(MoLeX @  12.6.2008,  16:51 Найти цитируемый пост)
может после этой команды и посылать хиадер? 

Эта команда работает при администрировании и если выйти из админки - всё возвращается как было smile

Автор: Feldmarschall 12.6.2008, 17:27
жесть. что вопросы, что ответы - один другого краше.

Добавлено через 1 минуту и 46 секунд
какое отношение вся эта рота выдаваемых заголовков имеет к обсуждаемым картинкам?

Добавлено через 5 минут и 8 секунд
Цитата(Роман @  12.6.2008,  16:30 Найти цитируемый пост)
в данном случае этого делать нельзя.

почему?

Цитата(Роман @  12.6.2008,  16:30 Найти цитируемый пост)
Нужно как-то через параметры кэширования. 

картинки у тебя пользователю кто выдает?

Автор: Роман 12.6.2008, 17:39
Я нашел выход  smile 
Назовем это "Умный мусор"
Код

echo "<img src=\"http://site.com/images/1.jpg?".filectime("http://site.com/images/1.jpg")."\">";

И нетронутые картинки не обновляются, т. к. время их изменения не поменялось.

Автор: MoLeX 12.6.2008, 17:48
Цитата

filectime -- Получить время последнего изменения i-узла



Роман  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)