Tomcat做服务器,图片URL不变的时候如何强制刷新?

thundersung 2019-01-02 01:56:18
后台有个程序一直在更新图片(间隔几乎是一百毫秒),放在Tomcat的webapp下相应工程的img文件夹中。
现在我在前端用JS的setInterval每隔一秒钟刷新图片,图片URL不变一直指向那个img文件夹的相应位置,但也增加了“?”后面跟时间戳的办法,另外header里面也禁用cache了。
在不做这些处理前,图片真是没法刷新,但加上之后也是固定的6秒钟才会刷新。
什么情况?难道跟Tomcat有关吗?
附上前端JS代码:

function changeImage()
{
var image=new Image();
var canvas=document.getElementById("myCanvas"); //myCanvas是HTML中的img标签对象
var cxt=canvas.getContext("2d"); //用来避免闪烁的
image.src="./img/cycle_photo.jpg"+ "?" + new Date().getTime();
image.onload = function ()
{
if (image.complete)
{
cxt.drawImage(image,0,0);
//打印Log发现每一秒循环这里都会走
}
else
{
alert(image.complete);
}
}
}
setInterval("changeImage();", 1000);
...全文
385 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
thundersung 2019-01-02
  • 打赏
  • 举报
回复
引用 2 楼 a857879531 的回复:
你这是前端的问题吧.前端应该可以清的.或者就是你清.或者url加时间戳
我图片URL加时间戳了,顺便header也设置了cache control为no cache,甚至no store都用了,结果还是这样。 我怀疑这些设置只会影响浏览器不访问浏览器端的缓存去跟服务器要,但服务器端也有各种资源比如图片或者CSS的缓存,我现在不想访问这个缓存的说。server.xml下那个reloadable也加了,不好使~~~
thundersung 2019-01-02
  • 打赏
  • 举报
回复
引用 1 楼 nicholasbobo 的回复:
照理来说,只要url加了时间戳就可以了。既然会固定6秒才会取到新图片,那会不会是后台代码哪里做了缓存,例如dao层用了mybatis,并且启用了二级缓存
没有,就是简单的一个jsp页面周期请求一个图片,URL地址指向后台一个独立于Tomcat的exe周期更新的jpg文件。都没有使用数据库。这个文件已经确认是很快就变的——直接拖到IE中不停刷新会变化。 整个需求就是原本一个本地app用来画曲线图,现在这个app周期保存图片然后用web页面也能看。我不会做CS转BS,所以用的这种笨方法。 我现在怀疑其实是Tomcat会对各种图片也缓存。虽然浏览器端可以忽略浏览器的缓存去服务器要图片,但Tomcat依旧会从服务器端的缓存去取资源,所以才会有6秒的情况。
a857879531 2019-01-02
  • 打赏
  • 举报
回复
你这是前端的问题吧.前端应该可以清的.或者就是你清.或者url加时间戳
nicholasbobo 2019-01-02
  • 打赏
  • 举报
回复
照理来说,只要url加了时间戳就可以了。既然会固定6秒才会取到新图片,那会不会是后台代码哪里做了缓存,例如dao层用了mybatis,并且启用了二级缓存

81,090

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧