+ -
当前位置:首页 → 问答吧 → jsp从缓存读图片的问题

jsp从缓存读图片的问题

时间:2011-09-03

来源:互联网

用 ajax 局部更新 页面上的统计图。

重新生成的统计图与原图文件名相同,所以在图片地址后面带了一个当前时间的参数
JScript code

alert("<img src='StatImg/"+picName+"'?"+times+" />");
            if ('MY'==picType){
                document.getElementById('pic3').innerHTML="<img src='StatImg/"+picName+"'?"+times+" />";
            } else if('Area'==picType){
                document.getElementById('pic4').innerHTML="<img src='StatImg/"+picName+"'?"+times+" />";
            }


HTML code

<span id="pic4">
    <img src="StatImg/<s:property value="rmList4[0].picName"/>?${ times }"  /><br />
</span>


alert 出来的times 每次都是变了的,按道理 应该请求的是新地址,就不应该从缓存中读图的
但是图片它就是从缓存中读。

项目目录下图片确认 生成了新图片。 times 参数确认每次都是新值(当前时间的long型)

第一次修改时 图片会更新,后面就不行了。

我怀疑是 innerHTML="<img src='StatImg/"+picName+"'?"+times+" />"; 这段代码 将 times 当作 英文字符串 的参数了
  所以第一次请求时地址 是变了的,后面每次都是 times 五个字母,没变就 从缓存读了。

是这样么?或者是怎样? 怎么解决?

作者: authorzhh   发布时间: 2011-09-03

周六都泡mm去了?

作者: authorzhh   发布时间: 2011-09-03

你是不是先在生成图片然后保存到服务器 再去改img的路径

作者: laixiazaiwenjian   发布时间: 2011-09-03

引用 2 楼 laixiazaiwenjian 的回复:

你是不是先在生成图片然后保存到服务器 再去改img的路径

先生成图片,返回图片名称(同修改前图片同名) 路径也是原来的,所以加一个时间轴,让它请求新图片。

作者: authorzhh   发布时间: 2011-09-03

禁用缓存试试

作者: laixiazaiwenjian   发布时间: 2011-09-03

引用 4 楼 laixiazaiwenjian 的回复:

禁用缓存试试

我不能让客户全部禁用缓存啊!!!
禁用缓存一切正常的。

作者: authorzhh   发布时间: 2011-09-03

实在不行就在后台写个servlet 直接输出image流 如果是struts的话就用action
前台用js控制img标签的src=servlet或者action地址+当前时间

作者: laixiazaiwenjian   发布时间: 2011-09-03

觉得 简单问题复杂化了

作者: authorzhh   发布时间: 2011-09-03

你把图片生成在服务器上 一样要生成 同时还占空间

作者: laixiazaiwenjian   发布时间: 2011-09-03