У меня есть один образ на моем веб-сайте, который я не хочу кэшировать. Изображение используется в качестве фона в CSS, поэтому я не могу изменить его имя динамически. Есть идеи ?
Другой альтернативой было бы добавить случайную строку после файла изображения.
<img src="/path/to/image/image.jpg?<?php echo time(); ?>/>
Это должно гарантировать, что изображение перезагружается каждый раз, когда страница отображается.
В mnot есть хорошее руководство по кэшированию, в котором объясняется, как настроить заголовки HTTP для запроса не кэшировать изображение (помните, вам нужно установить заголовки HTTP для изображения, а не HTML-документ).
Вероятно, это плохая идея, хотя изображения, как правило, относительно короткие, поэтому перезагрузка на каждой странице может привести к замедлению работы.
с apache вы не можете достичь этого двумя разными способами:
с mod_headers:
<FilesMatch "\.(png|jpg|jpeg|jpeg)$"> Header set Expires "Fri, 04 Aug 1978 12:00:00 GMT" Header set Cache-Control "no-cache, no-store, must-revalidate, max-age=0, proxy-revalidate, no-transform" Header set Pragma "no-cache" </FilesMatch>
или с mod_expires:
<IfModule mod_expires.c> ExpiresActive On ExpiresByType image/png A0 ExpiresByType image/gif A0 ExpiresByType image/jpg A0 ExpiresByType image/jpeg A0 </IfModule>
Если вы не можете настроить правила кеширования на Apache (как было предложено ответом @David Dorvard – см. Часть с помощью директивы <Files
), вы можете пропустить изображение через скрипт PHP и установить свои собственные (нет) заголовки кеширования там :
<?php header('Cache-Control: no-cache'); header('Expires: 0'); header('Content-Type: image/jpeg'); // or whatever your image is readfile('/some/path/to/yourfile.jpg'); ?>
Это должно дать вам изображение, которое не кэшировано вообще; акцент на должен , поскольку различные браузеры по-разному сломаны (IIRC IE6 кэшировал его в любом случае при привязке в качестве фонового изображения, но, к счастью, это на выходе).
Обратите внимание, что этот упрощенный подход 1) увеличит нагрузку на сервер, так как ему нужно запустить PHP для запроса изображения и 2) отключить частичную загрузку на скрипт / изображение
Если вы ориентируетесь на современные браузеры, вы можете использовать файл манифеста HTML5: http://diveintohtml5.ep.io/offline.html#network