[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как убрать кеширование картинок
brdm
Подскажите пожалуйста как убрать кеширование картинок в браузере.

Что имеется в виду?

На сайте есть html страницы со статьями. Каждая статья содержит одну тематическую картинку.
На базе страниц статей, на php формируются страницы анонсов к ним. Каждая страница с анонсами это краткое содержимое 5_ти статей с их уменьшенными картинками. Картинки уменьшаются средствами php и создаются временно для каждой открытой страницы с анонсами.

В чем проблема?
Проблема в том, что при переходе от одной страницы с анонсами к другой уменьшенные картинки анонсов остаются от прежней страницы с анонсами.
Они остаются в браузере. Что касается php там все впорядке. Одни временные картинки заменяются на другие.

Как решить эту проблему?



Спустя 7 минут, 44 секунды (25.05.2010 - 12:02) Basili4 написал(а):
я делал так <a href ="index.php?rrr=<?=rand(); ?>" > Сылка на туже страницу</a>

В кеш попадает другая старница с другими картинками

Спустя 24 минуты, 42 секунды (25.05.2010 - 12:27) zarafar написал(а):
Цитата
я делал так <a href ="index.php?rrr=<?=rand(); ?>" > Сылка на туже страницу</a>

В кеш попадает другая старница с другими картинками


Basili4 Так как вы написали, не будет кешироваться лишь страница index.php, при чем тут картинки ?

Случайное число можно и в данном случае вероятно (если средствами php они создаются в ФС) нужно использовать не с линком на страницу, а с линком на конкретную картинку.

brdm
Цитата
Картинки уменьшаются средствами php и создаются временно для каждой открытой страницы с анонсами.
Что касается php там все впорядке. Одни временные картинки заменяются на другие.

Из вами написанного могу предположить, что с помощью php картинки создаются в файловой системе, для каждой открытой страницы ?

Т.е. например открыта одна страница, для неё генерится картинка image.jpg, когда открывается другая страница эта картинка меняется на новую, с тем же именем image.jpg ? А если открыть опять первую страницу опять генерится та же картинка и скидывается в ФС с именем image.jpg ?

Если так, то не проще ли в ФС не создавать картинки, а отдавать сразу в браузер ?
Тогда для предотвращения кеширования, перед выводом картинки можно передать браузеру заголовки, чтобы не кешировал, что то типа :
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Content-type: image/png");

Спустя 6 минут, 14 секунд (25.05.2010 - 12:33) waldicom написал(а):
Цитата (zarafar @ 25.05.2010 - 11:27)
Тогда для предотвращения кеширования, перед выводом картинки можно передать браузеру заголовки, чтобы не кешировал, что то типа :

Или, как вариант, внести соответствующие директивы в настройки апача.

Спустя 4 минуты, 25 секунд (25.05.2010 - 12:38) zarafar написал(а):
Цитата (waldicom @ 25.05.2010 - 09:33)
Цитата (zarafar @ 25.05.2010 - 11:27)
Тогда для предотвращения кеширования, перед выводом картинки можно передать браузеру заголовки, чтобы не кешировал, что то типа :

Или, как вариант, внести соответствующие директивы в настройки апача.

Интересно, как это сделать выборочно не для всех картинок ?

Спустя 1 час, 3 минуты, 37 секунд (25.05.2010 - 13:41) brdm написал(а):
Немного информации:

Скрипт генерирует страницу с анонсами (допустим 5 шт). Страница с анонсами формируется путем выемки из развернутых страниц первого параграфа текста и картинки которая обязательно присутствует в первом параграфе страниц. Картинки уменьшаются и записываются в папку под именами 1.jpg ....5.ipg и при формировании страницы анонсов в цикле подставляются в кажды отдельный анонс страницы анонсов. При переходе на следующую страницу анонсов, которая формируется уже из других страниц-статей, прошлые картинки уничтожаются и на их место формируются новые. И т. д.

Вывести их сразу в браузер не позволяет устройство движка сайта, поскольку страница с анонсами готовится заранее в виде текстового файла (где уже есть все необходимое, теги, картинки с путями и т.п.) и только затем выводится в браузер.

Спустя 23 минуты, 7 секунд (25.05.2010 - 14:04) zarafar написал(а):
При выводе картинки сделайте на подобии:
<img src="1.jpg?noCache=<?php echo microtime(true)?>">

Спустя 23 минуты, 37 секунд (25.05.2010 - 14:28) twin написал(а):
Немного проще можно
<img src="1.jpg?<?php echo time()?>">

Спустя 18 минут, 25 секунд (25.05.2010 - 14:46) brdm написал(а):
После вывода в браузер смотрю в блокноте страницу
....
<img align="left" border="0" src="http://..../images/imganons/0.jpg?<?php echo
time()?>">
.....

В папке images/imganons картинка 0.jpg та, что нужно, а в браузере отображается картинка с прошлой страницы.
Чудеса какие то.

Спустя 48 минут, 24 секунды (25.05.2010 - 15:35) twin написал(а):
Файл должен быть исполняемым. Если нет, то тогда нужно доппараметр приделать javascript

Спустя 57 минут, 30 секунд (25.05.2010 - 16:32) brdm написал(а):
Понятно, спасибо.
У меня он какраз неисполняемый.
В браузер выводится содержимое переменной, куда загнана страница анонсов в текстовом виде.

А как туда приделать java?


Спустя 5 часов, 34 минуты, 50 секунд (25.05.2010 - 22:07) brdm написал(а):
Всем спасибо. Все решилось очень просто.

Имена создаваемых картинок должны быть уникальные типа $uniq_jpg = md5( uniqid(rand(), 1) ); а не 0.jpg, 1.jpg ... и тогда кеширование не действует.

Перед формированием каждой новой страницы с анонсами старые картинки нужно удалять.

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.