Как предотвратить кэширование изображений в браузере?
Каков наилучший способ запретить браузеру кэшировать изображения в 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 в качестве обновляемого аватара для пользователя, но когда он обновляется, браузер сохраняет старую версию.
Даже когда оригинал удален и добавлен новый, браузер все еще сохраняет старый аватар.png.
Есть какие-нибудь мысли?
4 answers
Просто поместите случайный параметр в конец URL-адреса изображения. Временная метка также может быть очень хорошо использована для этого.
Например, в PHP:
"http://domain.com/img.png?t=" . time();
Браузер всегда будет загружать это изображение новым. Однако вы должны использовать его с осторожностью, это замедлит загрузку.
Как только вы вставляете свое собственное изображение, нет необходимости каждый раз предотвращать кэширование изображений. Вы можете просто использовать filemtime ($IMGPATH), чтобы проверить время последней смены изображения.
Например: 'http://example.com/img.jpg?last_picture_update ='. время файла($IMGPATH)
В рамках одного сеанса просмотра, если вы используете один и тот же IMG src
, браузер часто будет повторно использовать сохраненную в памяти копию изображения независимо от настроек кэширования. Похоже, именно это и происходит с тобой здесь.
Я обобщил некоторые общие решения проблемы "обновить изображение" здесь.
Спасибо, этот пробег для меня вот так
Не запускать
echo "<img src='gambarLimas.jpg'><br>";
Хорошо бегать
echo "<img src='gambarLimas.jpg?t=".time()."'><br>";