是否有客户端方法来阻止图像被缓存?

时间:2010-04-23 23:00:05

标签: javascript html caching

是否可以使用javascript控制浏览器是否转到服务器以获取图像或浏览器缓存?我是否可以强制浏览器在使用缓存图像时进行服务器调用?我知道我可以简单地将查询字符串附加到我的图片网址,但是,如果我理解正确,这是有效的,因为浏览器将其视为新图像。我希望在缓存中替换旧图像。

2 个答案:

答案 0 :(得分:1)

您可以在页面上使用元标记进行缓存控制,设置为“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" />

请注意,“过去的某个日期”必须是RFC 1123 format中的GMT。

注意,您可以在HTTP标头中发送这些内容:See Here

希望这有帮助。

答案 1 :(得分:0)

您无法使用标准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();