使用javascript加载时,Chrome无法从缓存加载图片

时间:2013-11-14 23:56:33

标签: javascript image google-chrome httprequest browser-cache

我一直在使用以下内容在我的网站上加载图片:

var img = document.createElement('img');
img.src = 'http://i.example.com/image-1.jpg';

Chrome会在请求标头中添加Pragma: no-cacheCache-Control: no-cache

有没有办法可以摆脱这些标题,还是可以使用javascript修改它们?

1 个答案:

答案 0 :(得分:0)

元素启动尝试从服务器加载图像的HTTP请求,因此我建议尝试使用HTTP通道来修改这些标头。尝试这样的事情:

httpChannel.setRequestHeader("Pragma", "new_header_state_on_your_choice_1" , false);
httpChannel.setRequestHeader("Cache-Control", "new_header_state_on_your_choice_2" , false);

有关HTTP频道的有用链接:https://developer.mozilla.org/en/docs/Setting_HTTP_request_headers

如果这不起作用,请查看拦截页面(或内容)加载的方法: https://developer.mozilla.org/en-US/docs/XUL/School_tutorial/Intercepting_Page_Loads#HTTP_Observers

另一种方法是使用AJAX逐字模拟请求(AJAX请求,然后尝试加载响应),但这可能会复杂得多。

P.S。实际上有HTML方式来设置请求标头:

<head>   
  <meta charset="utf-8">   
  <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
  <meta http-equiv="Pragma" content="no-cache" />
</head>