javascript:location.reload()和location.replace()的区别,及对图片缓存的影响。
有段时间没有清理IE的临时文件(缓存文件),在我清理的时候,我突然发现一个问题。
我打开的一个网站,图片默认缓存一个月的,但我发现,当我上传图片或删除图片之后,图片重新缓存,也就意味着,在我上传新图片或删除图片的时候,页面上所有原来的图片都重新载入,重新缓存了。
从这一点上看,图片本身的缓存一点意义都没有了。
我查看了网页的javascript代码,发现在上传或删除的之后,调用的是 location.reload();
难道说,这个location.reload()不仅重新载入页面,而且页面里的所有资源也将重新载入。
我到网上搜索了一下,说这个location.reload(boolean state); 有个参数可选,默认是false。
可经过我的测试不管是:location.reload() 还是 location.reload(true) 都会在刷新页面的时候,重新载入页面里所有的图片。就像他们的介绍所说,location.reload()相当于在网页上按了 F5键刷新。
可我目前的这个应用,只希望刷新页面内容,同时不要让之前已载入的缓存图片重新再次载入。
这个很重要,如果每次刷新都重新载入所有的图片,这对服务器来说,将会非常的浪费带宽和资源。
我在网上也看到另一种刷新页面的方式:location.replace();
window.location.reload() 或 document.location.reload(); //2种方式
我测试了一下,将 location.replace() 替换原来的 location.reload()之后,就可以达到更新页面内容的同时不再重新加载之前IE缓存中已存在的图片,这样图片本身的缓存才有意义。
2010-11-06