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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Закешировать скрипт, создающий изображение на лету

Сообщения:  [1-10]    [11-20]  [21-24] 

 
 автор: bab-nike   (30.01.2011 в 01:18)   письмо автору
 
   для: tAleks   (18.01.2011 в 19:37)
 

Сказать честно прочитал только вопрос, понял одно -нужно кешировать изображение....
вот тема, я сделал через htaccess и работает отлично.
http://softtime.ru/forum/read.php?id_forum=2&id_theme=75115&page=1

  Ответить  
 
 автор: kosta_in_net   (28.01.2011 в 17:45)   письмо автору
 
   для: tAleks   (18.01.2011 в 22:06)
 

Я вообще считаю, что хранить изображения в базе - извращение. Если нужно иметь несколько вариантов водяных знаков, нужно создать несколько папок в которые складывать рисунки уже с нужными водяными знаками (при загрузке изображения сразу обрабатываются, получая несколько нужных копий).
Вопрос о том, как их кешировать отпадает сам собой. Ведь даже анализ того, есть ли файл и какова его дата - это уже некоторая нагрузка на сервер. А так - файлы заранее созданы. Просто бери и передавай их браузеру

  Ответить  
 
 автор: cheops   (18.01.2011 в 22:39)   письмо автору
 
   для: tAleks   (18.01.2011 в 22:23)
 

Можно поступить следующим образом
// Запрос к БД 
$doc = mysql_query("Запрос"); 

// отпралявем заголовки 
header("Cach-Control: public");
header("Expires: Tue, 18 Jan 2011 01:00:00 GMT");
header("Vari: Content-ID"); 
header("Content-ID: ".md5(mysql_result($doc, 0, 'docs'))); 
header("Content-type: ".mysql_result($doc, 0, 'type')); 

// Выводим картинку в окно браузера 
echo mysql_result($doc, 0, 'docs');

  Ответить  
 
 автор: tAleks   (18.01.2011 в 22:23)   письмо автору
 
   для: cheops   (18.01.2011 в 22:06)
 

Покажите пример, плиз.

И в моем, вышеописанном, случае, какие лучше заголовки послать?

  Ответить  
 
 автор: Trianon   (18.01.2011 в 22:11)   письмо автору
 
   для: tAleks   (18.01.2011 в 22:06)
 

я привел пример.
imgref.php порождает страницу с несколькими картинками.
по запросу картинки apache либо берет уже построенную ранее картинку, либо по условию отсутствия файла через Mod Rewrite сваливается в скрипт imgcreator.php с требованием создать файл с картинкой и выбросить его содержимое в поток браузеру, предварив причитающимися заголовками.

  Ответить  
 
 автор: tAleks   (18.01.2011 в 22:06)   письмо автору
 
   для: Trianon   (18.01.2011 в 22:00)
 

>Я о том, что кешированием должен заниматься http-сервер (apache), а не php-интерпретатор.
>Что если файл уже есть (уже создан php-интерпретатором в процессе обработки некоторого запроса, который был ранее), то на php вообще управление передаваться не должно.

И я примерно так думаю. Вопрос в том, как это реализовать в моем, вышеописанном, случае?

  Ответить  
 
 автор: cheops   (18.01.2011 в 22:06)   письмо автору
 
   для: tAleks   (18.01.2011 в 22:04)
 

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

  Ответить  
 
 автор: tAleks   (18.01.2011 в 22:04)   письмо автору
 
   для: cheops   (18.01.2011 в 21:59)
 

А когда изображение на сервере изменится? Как об этом узнают все те, кто закешировали предыдущее изображение?

  Ответить  
 
 автор: Trianon   (18.01.2011 в 22:00)   письмо автору
 
   для: tAleks   (18.01.2011 в 21:53)
 

Я о том, что кешированием должен заниматься http-сервер (apache), а не php-интерпретатор.
Что если файл уже есть (уже создан php-интерпретатором в процессе обработки некоторого запроса, который был ранее), то на php вообще управление передаваться не должно.

  Ответить  
 
 автор: cheops   (18.01.2011 в 21:59)   письмо автору
 
   для: tAleks   (18.01.2011 в 21:58)
 

По сути тут один HTTP-заголовок, управления кэшем "Cach-Control: public", который всем встречным говорит - кэшируйте, если можете, нечего беспокоить изначальный сервер.

  Ответить  

Сообщения:  [1-10]    [11-20]  [21-24] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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