Dou*_*eux 2 javascript php jquery image comet
我正在使用一个名为APE的Comet,Realtime引擎,我使用jQuery来刷新PHP图像.最初我加载这样的图像:
<div id="container">
<img src="image.php" style='background: url(../assets/load.gif) no-repeat center center;margin-left:42px;' alt=' Loading ...' width="500px" height="300px" />
</div>
Run Code Online (Sandbox Code Playgroud)
然后当我收到一个事件时,我这样做:
$("#container").empty();
$("#container").html('<img src="image.php?device='+device+'" style="background: url(../assets/load.gif) no-repeat center center;margin-left:42px;" width="500px" height="300px" alt=" Loading ..."/>');
Run Code Online (Sandbox Code Playgroud)
device是我从事件中收到的var,所以例如我得到device1,一切正常(图像实际上是图表),标题更改为"device1",并绘制最后5分钟
但是,我的问题是每次收到一个事件,在这个初始事件之后,日期仍然是相同的五分钟时间.我的设备每次都是相同的,但在我的脚本中我计算5分钟前到当前时间的时间纪元,但是这个脚本似乎没有更新图像.是缓存还是什么?
我已经尝试在页面顶部使用它:
<?php
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
?>
Run Code Online (Sandbox Code Playgroud)
我可以等待大约10分钟,发送一个事件,但时间段仍然是从初始加载,我认为"empty()"将清除容器,重新加载图像,因此重新运行脚本.任何建议都会有帮助!
谢谢
一种常见的方法是在包含unix时间戳的查询字符串中添加一个普通的var; 浏览器将每个调用视为对唯一图像的调用.例如
'image.php?device=' + device + '&t=' + Math.round((new Date()).getTime() / 1000);
Run Code Online (Sandbox Code Playgroud)
因此它不认为它有缓存的图像.(虽然它会继续任何缓存策略导致此问题)