Есть ли способ на стороне клиента предотвратить кэширование изображения? - PullRequest
4 голосов
/ 24 апреля 2010

Можно ли с помощью javascript контролировать, отправляется ли браузер на сервер для изображения или в кеш браузера? Могу ли я заставить браузер выполнить серверный вызов, если он использует кэшированное изображение? Я знаю, что могу просто добавить строку запроса к URL-адресу моего изображения, но, если я правильно понимаю, это работает, потому что браузер видит это как новое изображение. Я хочу заменить старое изображение в кеше.

Ответы [ 2 ]

1 голос
/ 24 апреля 2010

Вы можете использовать мета-теги на странице для управления кэшированием, установив «no-cache» следующим образом:

<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">

и

<META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">

Вы также можете установить «истечение срока действия» страницы в определенный момент в прошлом, что теоретически заставит браузер проверять наличие новейшей версии:

<META HTTP-EQUIV="EXPIRES" value="some date in the past" />

Обратите внимание, что "некоторая дата в прошлом" должна быть GMT в формате RFC 1123 .

Обратите внимание, вы можете просто отправить их в самом заголовке HTTP: См. Здесь

Надеюсь, это поможет.

0 голосов
/ 24 апреля 2010

Вы не можете делать ничего подобного со стандартным тегом img. Вы можете создать XMLHttpRequest для изображения и установить заголовок if-modified-since. Это должно заменить старое изображение в кеше:

var url = "http://www.mysite.com/images/myimage.png";
var xhr = new XMLHttpRequest(); // or x-browser compat function
xhr.open("GET", url, true);
xhr.setRequestHeader("If-modified-since", "Thu Jan 1 00:00:00 UTC 1970");
xhr.onreadystatechange = function ()
{
    if (xhr.readyState == 4 && xhr.status == 200)
        document.getElementById("myImg").src = url;
}
xhr.send();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...