запретить кэширование

torsar

Новичок
запретить кэширование

Как запретить кэширование пхп скрипта?
 

torsar

Новичок
Есть скрипт outbinaryfile.php:

<?php
header('header("Content-type:image/jpeg");');
$r=rand(1,8);
$content=file("img/$r.jpg");
$cnt=count($content);
for($i=0;$i<$cnt;$i++)
{
echo $content[$i];
}
?>

он выдает на выход бинарные данные
(случайную jpeg-картинку).

Есть html - файл :

<html>
<head>
<script>
window.setInterval(refreshfnc,3000);
function refreshfnc()
{
i.src='outbinaryfile.php';
}
</script>
</head>
<body>
<center>
<img id='i' src='outbinaryfile.php' width='400px' height='400px'>
</center>
</body>>
</html>

Нужно чтоб страничка периодически меняла изображение через пхп скрипт
Не работает
зы Если нажимаю обновить - рабоатет
 

Dovg

Продвинутый новичок
Mr_Max
Не совсем
ему на стороне клиента надо урл менять

-~{}~ 09.04.08 15:31:

что-нить типа
i.src='outbinaryfile.php?param='+Math.random();
 

Dovg

Продвинутый новичок
Если в браузере кроме этой картинки ничего выводить не надо.
Вдруг там тест: надо написать что на картинке, пока она не сменилась ;)
 

MaxiStyle

Новичок
Мне хватает и этого:
Пример:
Header ("Last-Modified: " . gmdate("D, d M Y H:i:s",mktime (0,0,0,1,1,2000)) . " GMT");
// Дата в прошлом

Header ("Expires: Mon, 26 Jul 2040 05:00:00 GMT");
// Дата истечения актуальности. В данном случае картинка всегда актуальна.

Header ("Cache-Control: max-age=10000000, s-maxage=1000000, proxy-revalidate, must-revalidate");

//Cache-Control сообщает браузеру (как и прокси-серверу) перезагрузить
// все картинки! В данном случае после 1 миллиона секунд.
 

Bollitore

Новичок
Может быть, это очередной велосипед, но я на 100% избавился от кэша при выводе меняющихся изображений путем присвоения при каждом выводе нового имени изображению.
Плюс - абсолютная независимость от типа браузера пользователя
Минусы - нужно использовать MySQL для получения уникального имени текущего изображения путем выполнения insert в таблицу с одним-единственным автоинкрементным полем либо сделать что-то подобное через файл.
Кроме этого, нужно предусмотреть unlink создаваемых файлов.
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Bollitore
Минусы - нужно использовать MySQL для получения уникального имени текущего изображения путем выполнения insert в таблицу с одним-единственным автоинкрементным полем либо сделать что-то подобное через файл.
Кроме этого, нужно предусмотреть unlink создаваемых файлов.
не кури больше эту гадость.
 

Bollitore

Новичок
Обрисовываю реальную ситуацию:
есть огромное изображение png (15 мегов). Таскать его каждый раз туда сюда...короче, ясно, что нужен навигатор и вывод фрагмента. Навигатор располагается в окошке слева сверху, фрагмент - в большом окне справа. Нажатием мышки на навигаторе производится формирование фрагмента, соответствующего координатам места щелчка на навигаторе.
При этом на навигаторе рисуется прямоугольник, центр которого является местом вышеупомянутого щелчка.
Если в качестве имен фрагмента и нового образа навигатора (с перемещенным прямоугольником) использовать фиксированные имена файлов (допустим, формируемые по ID пользователя), то никакие магические слова типа meta refresh и прочие заклинания не действовали - кэш работал как часы что на Oper'е, что на Explorer'е. Так что, накурившись одной гадости, я предпочел напиться другой.:D
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Bollitore
Для отключения кешированния ненужна ни БД ни "через файл".

Самый просто и ефективные способ один.
outbinaryfile.php?любой уникальный текст.
 

Bollitore

Новичок
Mr_Max
Для отключения кешированния ненужна ни БД ни "через файл".
Самый просто и ефективные способ один.
outbinaryfile.php?любой уникальный текст.
_______________________________________________________

Попробую трактовать ваше предложение так:

идет php-code
.....
сделали, что хотели и выводим html-code

echo "
....
<form name=\"form_name"\" action = \"phpcode.php?любая уникальная абракадабра\" method = \"post\"
....
<input type=\"image\" src=\"MyImageName\". . . . ></input> // эта строчка содержит изображение c именем MyImageName, которое не должно кэшироваться
....
";

Итог - если
action = \"phpcode.php?любая уникальная абракадабра\"
при каждом новом выводе будет содержать отличный от предыдущего вывода текст, то кэширование будет отключено ?
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Bollitore
src="http://ya.ru/logo.gif?уникальный текст"
 

MaxiStyle

Новичок
Bollitore
Скрипт должен быть в logo.gif, а картинка генерится налету, тогда и unlink не понадобится.
 

Bollitore

Новичок
MaxiStyle
Скрипт должен быть в logo.gif, а картинка генерится налету, тогда и unlink не понадобится.
----------------

Суть-то в чем - У меня огромный файл с картой. Когда пользователь щелкает мышью на навигаторе, то справа должен отобразиться тот фрагмент, который выбран (мвсштабирование навигатора по отношению к исходной карте - 26 раз. Функциями обработки файлов png я создаю изображение этого фрагмента из файла-оригинала и вывожу его в файл с уникальным именем. Дальше нужно сформирвать html-страницу и вывести ее в браузер пользователя. Пользователей много. На каждый щелчок мышью любого пользователя выполняется команда Insert, вытаскивается Id и на его основе как раз формируется уникальное имя с расширением png. Это имя файла передаю через скрытую (hidden) переменную html, после выполнения пользователем каких-либо действий проверяю наличие этой переменной и делаю unlink файу с этим именем.
Mr_Max - никак не найду времени проверить ваш совет. Но проверю и расскажу.
 

dimagolov

Новичок
Bollitore, после фразы " У меня огромный файл с картой" мне начинает казаться, что Вы дурью маетесь. потому что карту надо держать как отдельные квадраты-фрагменты, причем по идее для разных масштабов они должны быть нагенерены заранее, и одновременно пользователю может понадобиться набор из их определенного кол-ва (соотношение размера фрагмента к размеру окна просмотра). Как только скрол окна просмотра доходит до незагруженного фрагмента (то есть такого, на месте котогого кешируемая заглушка стандартного размера), то подменяется JS-ом src этого фрагмента на актуальный фрагмент.
Вопрос того отдавать юзерам статические ссылки на карту или боясь ее юзания не через интерфейс генерить линки на лету и отдавать картинки скриптом или ngnix - это уже технические детали. основное, что сами карты на сервере должны лежать статикой порезанной на фрагменты и с вариантами для разных масштабов. Если хотите плавное масштабирование, то это можно сделать средствами броузера в диапазоне между статическими масштабами.
 
Сверху