阿里云存储如何让浏览器始终以200 (from cache)缓存图片?

阿里云存储如何让浏览器始终以200 (from cache)缓存图片?
关注者
166
被浏览
21,425
登录后你可以
不限量看优质回答私信答主深度交流精彩内容一键收藏

通过大家的回答和我自己的实验发现(Chrome上),对于阿里云的云存储,加大Cache-Control的max-age是有效的,这点我之前也试过,但是像

@yuanyuanVivian

说的,是在输入URL按下回车时有效,直接刷新时图片还是无法直接加载缓存,而且无法禁用阿里云存储Etag,但是事实上,还有一种方式可以让浏览器直接使用200 OK (form cache)缓存,那就是在其它元素都加载完时通过js插入图片或设置背景图片。在jquery里就是$(window).load()的时候。

$(window).load(function() {
      var bg='http://img.infinitynewtab.com/wallpaper/100.jpg';
      setTimeout(function() {
	   $('#bgOut').css('background-image', 'url('+bg+')');
      },0);
});

其中setTimeout(xxx,0)是必须的,没有这句还是会以304 Not Modified 的方式缓存

而用上之后:

另外在DOM加载时将setTimeout的时间设置大一点也是可以的,但是你无法判断在不同的环境下这个时间是多少。

我写了个页面大家可以用Chrome浏览器来测试一下是不是这样:

Test

结果截图:

即使用强制刷新,图片也可以直接读取缓存了。

PS.测试不充分,仅Windows Chrome 版本 41.0.2272.89 m