Как предотвратить кеширование изображений в браузере? - PullRequest
5 голосов
/ 06 января 2012

Как лучше всего запретить браузеру кэшировать изображения в PHP?

Я пробовал заголовок ( метод:

header("Expires: Tue, 03 Jul 2001 06:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");

Но ничегоКажется, работает, кроме как для очистки кэша браузера вручную.

У меня есть изображения, которые заменяются тем же именем, например avatar.png в качестве обновляемого аватара для пользователя, но когда онпри обновлении браузер сохраняет старую версию.

Даже если оригинал удален и добавлена ​​новая, браузер все еще сохраняет старую avatar.png .

Есть мысли?

Ответы [ 4 ]

15 голосов
/ 06 января 2012

Просто поместите случайный параметр в конец URL изображения.Отметка времени также может быть очень хорошо использована для этого.

Например, в PHP:

"http://domain.com/img.png?t=" . time();

Браузер всегда загружает это изображение новымВы должны использовать это с осторожностью, хотя, это замедлит время загрузки.

6 голосов
/ 21 октября 2013

Как только вы вставляете свое собственное изображение, нет необходимости каждый раз предотвращать кеширование изображения.Вы можете просто использовать filemtime ($ imgPath), чтобы проверить время последнего изменения изображения.

Например: 'http://example.com/img.jpg?last_picture_update='.filemtime ($ imgPath)

2 голосов
/ 16 марта 2014

В том же сеансе просмотра, если вы используете тот же IMG src, браузер будет часто использовать свою копию изображения, сохраненную в памяти, независимо от настроек кэширования.Похоже, именно это и происходит с вами здесь.

Я суммировал некоторые распространенные решения проблемы «обновить изображение» здесь .

0 голосов
/ 28 ноября 2016

спасибо, этот Run для меня вот так

не работает <</p>

echo "&lt;img src='gambarLimas.jpg'><br>"; 

хорошо бегать

echo "&lt;img src='gambarLimas.jpg?t=".time()."'><br>"; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...