Как запретить браузеру кэшировать изображение?

У меня есть один образ на моем веб-сайте, который я не хочу кэшировать. Изображение используется в качестве фона в 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