Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: кэширование картинки из базы данных
 
 автор: kievigor   (09.04.2006 в 21:32)   письмо автору
 
 

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


$res=mysql_query("dbase", "SELECT img FROM foto WHERE id=$id");

$sel=mysql_fetch_row($res);
$image=$sel[0];

// Отправляем заголовки
header("Cache-Control: public, must-revalidate");
header("Vary: Content-ID");
header("Content-ID: ".md5($image));
header("Content-type: image/jpeg");

// Выводим картинку в окно браузера
echo $image;

   
 
 автор: cheops   (10.04.2006 в 00:19)   письмо автору
 
   для: kievigor   (09.04.2006 в 21:32)
 

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

   
 
 автор: kievigor   (10.04.2006 в 00:29)   письмо автору
 
   для: kievigor   (09.04.2006 в 21:32)
 

Хочу, чтобы картинка кэшировалась.

   
 
 автор: cheops   (10.04.2006 в 00:33)   письмо автору
 
   для: kievigor   (10.04.2006 в 00:29)
 

Тогда как минимум нужно убрать must-revalidate - эта директива имеет обратное действие. Вообще заголовки носят лишь рекомендательный характер, кэшировать документы или нет принимает решение промежуточный прокси-сервер (если он есть) и браузер.

   
 
 автор: kievigor   (10.04.2006 в 00:37)   письмо автору
 
   для: cheops   (10.04.2006 в 00:33)
 

Спасибо. Сейчас попробую.

   
 
 автор: kievigor   (10.04.2006 в 00:41)   письмо автору
 
   для: kievigor   (10.04.2006 в 00:37)
 

Не помогло.

   
 
 автор: kievigor   (10.04.2006 в 02:05)   письмо автору
 
   для: cheops   (10.04.2006 в 00:33)
 

А вообще как я понял must-revalidate не запрещает кэширование, а просто заставляет проверить изменились ли характеристики файла с момента предыдущего кэширования или нет. Может я и не прав, но без must-revalidate все равно не работает.

   
 
 автор: cheops   (10.04.2006 в 13:21)   письмо автору
 
   для: kievigor   (10.04.2006 в 02:05)
 

Добавьте лучше заголовок
<?php
  header
("Cache-control: public");
?>

must-revalidate - сообщает, что кэшировать документ не рекомендуется - он слишком часто подвергается изменению. Добавьте также заголовок
<?php
  header
("Expires: Mon, 23 May 2010 02:00:00 GMT"); 
?>

Который сообщит, что документ устареет только в 2010 году.

   
 
 автор: kievigor   (10.04.2006 в 18:24)   письмо автору
 
   для: kievigor   (10.04.2006 в 02:05)
 

Все равно не помогает.

   
 
 автор: cheops   (10.04.2006 в 23:01)   письмо автору
 
   для: kievigor   (10.04.2006 в 18:24)
 

А у вас кэш в браузере отключён - его не пробить ни чем, только настройкой параметров браузера?

   
 
 автор: kievigor   (11.04.2006 в 01:32)   письмо автору
 
   для: cheops   (10.04.2006 в 23:01)
 

Нет не отключено у меня в браузере кэширование. Кэшируется все кроме картинок взятых из базы и выводимых непосредственно в браузер. Наткнулся на пример кэширования подобной информации в книге “PHP5 практика создания web-сайтов”, это ваша книга. Попробовал и ничего не вышло, как не кэшировались так и не кэшируются. Вот и спрашиваю, может кто с подобными проблемами сталкивался?

   
 
 автор: cheops   (11.04.2006 в 14:33)   письмо автору
 
   для: kievigor   (11.04.2006 в 01:32)
 

Дело в том, что HTTP-заголовки, управляющие кэшированием, воспринимаются в основном промежуточными прокси-серверами. Почти ни один из браузеров на них не обращает внимание, считая, что настройки пользователя имеют больший приоретет. С браузером бороться при помощи HTTP-заголовков вряд ли получится.

   
 
 автор: kievigor   (11.04.2006 в 15:14)   письмо автору
 
   для: cheops   (11.04.2006 в 14:33)
 

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

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования