有一个简单的需求就是如何使页面上的一个图片内容实现实时刷新;
什么意思呢?这样一个场景:
页面上有一个图片,src指向后台的一个图片链接,如名为test.jpg的图片。图片本身为后台实时产生更新的,如新浪股票信息走势图片。每一秒的图形都可能在变化。如何使页面实现这样的动态更新?简单的办法就是:
var img = document.getElementById("test"); img['src'] = imgurl;
通过setInterval来定时刷新图片。这里需要对imgurl做个简单处理,即加上queryString。如加上?version=currenttimestamp。这样能保证每次请求都不一样,图片得到定时刷新。
<img id=test alt="" src="http://www.soosmart.com/images/live/test.gif" /> <script language="javascript" type="text/javascript"> var d = new Date(); document.getElementById("test").src ="http://www.soosmart.com/images/live/test.gif?ver=" + d.getTime(); </script>
这种方法总需要加上一个尾巴,总令人不爽。如果需要对页面的图片请求加no-cache head又需要在web server端做些配置,也不是完美解决方法,尤其当图片来源是其他网站的时候,我们没有办法控制。有没有更好的解决方案?参考了下面的一些讨论,没有发现更好的方法。
参考文档:
Two Simple Rules for HTTP Caching
Image Caching in Internet Explorer
How to force a web browser NOT to cache images
disable cache for some images