Как кешировать динамические изображеия с помощью PHP?

Добрый день.

Для генерации изображений (статус-бар, подпись) используются данные из MySQL и локально расположенные шаблоны изображений и используемые шрифты.

Процесс генерации изображения в этом фрагменте кода:

$im     = imagecreatefrompng("./bg_2.png");
$over   = imagecreatefrompng("./over.png");
$flag   = imagecreatefrompng("/dist/img/flags/".$country.".png");
$status = imagecreatefrompng("./".$online.".png");

$orange = imagecolorallocate($im, 205,66,43);
$white  = imagecolorallocate($im, 255,255,255);
$green  = imagecolorallocate($im, 0,204,51);
$red    = imagecolorallocate($im, 255,61,61);
$blue   = imagecolorallocate($im, 51,102,255);
$navy   = imagecolorallocate($im, 75,100,111);

imagecopy($im, $over, 0, 0, 0, 0, 468, 60);
imagecopy($im, $flag, 10, 12, 0, 0, 16, 11);
imagecopy($im, $status, 350, 0, 0, 0, 120, 60);

imagettftext($im, 16, 0, 35, 25, $white, $font, $string);
imagettftext($im, 10, 0, 10, 50, $white, $font2, $string5);

header("Content-type: image/png");

imagepng($im);
imagedestroy($im);
imagedestroy($over);
imagedestroy($flag);


Суть вопроса, как правильно кешировать полученное изображение (Memcached или альтернативы), учитывая что интервал обновления данных в БД - 5 минут?
  • Вопрос задан
  • 458 просмотров
Пригласить эксперта
Ответы на вопрос 3
opium
@opium
Просто люблю качественно работать
Просто подождите на диск все само закешируется это же статика
Ответ написан
sHinE
@sHinE
веб-разработчик, php/js/mysql и сопутствующее
У вас входных параметров 4 по сути - страна, статус (онлайн/оффлайн) и две строки.
Строки у вас скорее всего меняются редко, страна вообще не меняется, а статус - достаточно часто.
При изменении строк генерил бы две картинки - одна оффлайн, другая онлайн и хранил бы отдельно.
Раз в 5 минут - смотрел в БД и копировал картинку с нужным статусом в нужное место (ну или переименовывал - но тут надо как-то запоминать предыдущее имя/место файла).
Ответ написан
В качестве предложения, можно выдавать
HTTP заголовок Expires, указывающий когда истекает 5 минут. Тогда веб клиенты смогут узнать когда обновлять картинку.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы