Укажите проверку валидатора для изображений, созданных функциями imagejpeg/imagepng.
Все, что мы знаем, мы можем указать валидатор кеша для изображений, добавив следующие строки в файл .htaccess:
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 year"
</IfModule>
.. и..
<IfModule mod_headers.c>
<FilesMatch "\.(bmp|css|flv|gif|ico|jpg|jpeg|js|pdf|png|svg|swf|tif|tiff)$">
Header set Last-Modified "Mon, 31 Aug 2009 00:00:00 GMT"
</FilesMatch>
</IfModule>
Но это будет эффективно для реальных файлов JPG или PNG. Однако вопрос заключается в том, как указывать кеш-валидатор для изображений, созданных с помощью PHP-кодов и функций imagejpeg/imagepng на лету? (выше коды не эффективны для них)
PS: Я попытался смоделировать URL-адрес изображения, созданного PHP, как реальное изображение, используя файл .htaccess(например: http://example.com/1.jpg
, который генерируется файлом PHP и не является реальным .jpg изображением), но все же получение предупреждения о валидаторе кеша.
Ответы
Ответ 1
Вы можете добавить PHP-код перед функциями imagejpeg/imagepng:
function TestModifiedSince($PageTimeStamp, $TextDatePage) {
if (isset($_SERVER["HTTP_CACHE_CONTROL"])) {return;}
if (!isset($_SERVER["HTTP_IF_MODIFIED_SINCE"])) {return;}
$TestTime=strtotime($_SERVER["HTTP_IF_MODIFIED_SINCE"]);
if (($TestTime - $PageTimeStamp) >= 0) {
header('Last-Modified: '. $TextDatePage, true, 304);
exit();
}
}
# hh mm ss MM DD YYYY
$DateUpdateBaseDef = mktime(00, 00, 00, 08, 31, 2009);
$TimeHeadUpdate = gmdate('D, d M Y H:i:s', $DateUpdateBaseDef).' GMT';
TestModifiedSince($DateUpdateBaseDef, $TimeHeadUpdate);
Ответ 2
Моя идея, внесите изменения в конфигурацию сервера, чтобы выполнить другое расширение, а не только PHP. для печати изображений при использовании тега img с источником файла php для рендеринга изображения. используйте другое расширение, такое как getimage.iphp.
Включите в свои настройки .htaccess с управлением кешем файла с расширением .iphp
Наконец, используйте заголовок внутри вашей функции генерации изображений, чтобы установить истечение отдельного файла изображения.
Его теория бит, но может быть полезной как идея для реализации.