Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как избавиться от кэша при ежедневной смене карт.? 
V
    Опции темы
Artiomka
Дата 28.7.2009, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 28.7.2009

Репутация: нет
Всего: нет



Есть маленькая программка на php с базой данной, которая каждый день меняет картинки.
Все нормально, только иногда с первого раза картинка не прорисовывается! 
Люди говорят кэш мешает. Есть шанс это исправить? 
Заранее спасибо!  smile 
PM MAIL   Вверх
Ипатьев
Дата 28.7.2009, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



если html с картинкой выводится пхп скриптом, то добавлть к имени файла случайный параметр.

PM MAIL   Вверх
Artiomka
Дата 28.7.2009, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 28.7.2009

Репутация: нет
Всего: нет



А можете привести пример? 
Если скрипт .../test.php
и он находится в файле правой колонке ..../right.php
к какому имени добавить параметр и как он может выглядеть?

Спасибо  smile 
PM MAIL   Вверх
MoLeX
Дата 29.7.2009, 05:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



Artiomka, а какой скрипт отвечает за вывод картинки?


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Ипатьев
Дата 29.7.2009, 07:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Цитата(Artiomka @  28.7.2009,  23:16 Найти цитируемый пост)
к какому имени 

к имени картинки
PM MAIL   Вверх
fesor
Дата 29.7.2009, 07:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 16.7.2009
Где: Минск

Репутация: 4
Всего: 4



Добавление рандомного значения хорошо только для загрузки файлов.

Код

<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">


может поможет... хотя неуверен что для картинок это сойдет.
PM MAIL WWW   Вверх
Ипатьев
Дата 29.7.2009, 08:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



fesor, а картинка - это не файл? А что?

И куда писать твой код? В картинку?
PM MAIL   Вверх
Artiomka
Дата 29.7.2009, 08:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 28.7.2009

Репутация: нет
Всего: нет



Картинки 1.png 2.png 3.png и так далее - штук 200. Они меняются строго по номеру каждый день.
А прорисовываются иногда только после F5.
Это менять надо имя каждый картинки???
А скрипт такой:

Спасибо  smile 

Код

<?
include( "./config.php" );
/* sql section */
$q = new query( hostDB, userDB, passwdDB, use_db );
$q->sent("SELECT * FROM pics");
$r = $row = $q->next();
/*files section*/
$dir_name='./images/daily/';
$d=opendir($dir_name) or die($php_errormsg);
while( false !==($f=readdir($d))){
if (is_file("$dir_name$f")){
$f_arr[]=$f;
}
}
closedir($d);
sort($f_arr);
reset($f_arr);
/*============*/
$last_day = substr($r['last_upd'],0,strpos($r['last_upd'],'_'));
$last_year = substr($r['last_upd'],(strpos($r['last_upd'],'_')+1));
$day_now = date("z");
$year_now = date("Y");
if ((($day_now > $last_day) && ($last_year <= $year_now) || ($last_year > $year_now))){
//method selection
if ($r['method'] == 1) { //random
$curr=array_rand($f_arr);
if ($curr == $r['current']){$curr = $curr + 1;}
if ($curr >= count($f_arr)) { $curr = 0; }
}
if ($r['method'] == 2) { //step by step
$curr = $r['current'] + 1 ;//array_search($r['current'],$f_arr)+1;
if ($curr >= count($f_arr)) { $curr = 0; }
}
//-----------------
$q->sent("update pics set last_upd='".$day_now."_".$year_now."'");
$q->sent("update pics set current=".$curr);
//refresh vars
$q->sent("SELECT * FROM pics");
$r = $row = $q->next();
}

$current_item = $r['current'];
$filename = $f_arr[$current_item];
$ext = substr($filename,strpos($filename,'.')+1);
//show image*
if ($ext == 'jpg' || $ext == 'jpeg') {
$im = @imagecreatefromjpeg("./images/daily/".$filename);
header("Content-type: image/jpeg");  
imagejpeg($im);  
}
if ($ext == 'gif') {
$im = @imagecreatefromgif("./images/daily/".$filename);
header("Content-type: image/gif");  
imagegif($im);  
}
if ($ext == 'png') {
$im = @imagecreatefrompng("./images/daily/".$filename);
header("Content-type: image/png");  
imagepng($im);  
}

/*echo $r['current'];
echo date("F j, Y, g:i a",'1192370400');
?>


Модератор: используй кнопку КОД для оформления

Это сообщение отредактировал(а) MoLeX - 29.7.2009, 08:43
PM MAIL   Вверх
Ипатьев
Дата 29.7.2009, 08:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



В этом коде не надо ничего менять. Писать надо в коде показа. в теге img


Это сообщение отредактировал(а) Ипатьев - 29.7.2009, 08:47
PM MAIL   Вверх
MoLeX
Дата 29.7.2009, 08:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



Artiomka, допустим твой скрипт называется images.php, соответственно он вызывается вот так
Код

<img src="images.php" />


а теперь переделываем в следующее
Код

<img src="images.php?<?=date('Y-m-d');?>" />



--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Ипатьев
Дата 29.7.2009, 08:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



В этом коде можно вписать заголовки, управляющие кэшированием.

Но код очень забавный. Только сейчас разглядел.
PM MAIL   Вверх
Artiomka
Дата 29.7.2009, 08:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 28.7.2009

Репутация: нет
Всего: нет



В коде показа ...
Я так понимаю в коде <img src=".../test.php"/> 
А не подскажете, что именно здесь менять. Вроде все нормально (для новичка конечно!)

Спасибо  smile

Добавлено через 3 минуты и 27 секунд
"заголовки, управляющие кэшированием."
 smile  -  очень мъаленький!
PM MAIL   Вверх
MoLeX
Дата 29.7.2009, 09:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



Цитата(Artiomka @  29.7.2009,  08:59 Найти цитируемый пост)
"заголовки, управляющие кэшированием."

до вывода инфы в браузер
Код

 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");


Добавлено @ 09:14
Цитата(Artiomka @  29.7.2009,  08:59 Найти цитируемый пост)
Я так понимаю в коде <img src=".../test.php"/> 

да, сделай так


Код

<img src=".../test.php?<?=date('Y-m-d');?>" />


и каждый день к адресу картинки будет добавляться мусор


Это сообщение отредактировал(а) MoLeX - 29.7.2009, 09:14


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
icewind
Дата 29.7.2009, 09:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 393
Регистрация: 11.4.2009
Где: Ростов-на-Дону

Репутация: 20
Всего: 20



Цитата(Artiomka @  29.7.2009,  08:59 Найти цитируемый пост)
Я так понимаю в коде <img src=".../test.php"/> 


Цитата(MoLeX @  29.7.2009,  08:46 Найти цитируемый пост)
а теперь переделываем в следующее
Код

<img src="images.php?<?=date('Y-m-d');?>" />
    

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

Это сообщение отредактировал(а) icewind - 29.7.2009, 09:17


--------------------
user posted image
PM MAIL Skype   Вверх
Artiomka
Дата 29.7.2009, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 28.7.2009

Репутация: нет
Всего: нет



Переделал выводящий файл по вашему совету. Теперь он выглядит так:

<img src=".../test.php?<?=date('Y-m-d');?>" width="180" />

Эксплорер - 100% работает!
Опера - 100% работает!
Firefox - через раз .. хмм

А код ниже вставить в самый верх файла test.php?

Код

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");


Спасибо  smile 
PM MAIL   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1073 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.