IE图片缓存的问题

xietingyan 2008-10-09 04:24:33
要做的东西是实现这个这样的功能,把鼠标移动到某个条目上,然后弹出一个层显示出这个条目的图片,图片可以修改。
在弹出的那个div用<img />来实现,图片在tomcat启动时已经生成在一个文件目录下了,
修改了图片后是用的struts,redirect到原来的页面,问题是仍不显示修改后的图片!还是原来的图片,没有变化。
引用图片的js代码:
$("imagePreview").src = imagesrc+"?tempid="+Math.round(Math.random()*100);
然后google(发现用chrome,或者修改IE设置为每次检查后,修改了图片能够立即变化,但是以客户为中心)
然后在head里加了mete的那三行禁止缓存的语句,没有用,还用了innerHTML把整个img换掉,也给img后面的src加了一个tempid,最后出现的问题是,修改了图片后,有时候显示修改后的图片,再移开又移上去又有可能显示原来的老图片,
到底有没有什么好的办法呢?
...全文
1541 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
adandelion 2009-07-14
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 BearRui 的回复:]
试试:

$("imagePreview").src = imagesrc+"?tempid="+Math.random();
[/Quote]

非常感谢
BearRui 2008-10-09
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 xietingyan 的回复:]
引用 11 楼 BearRui 的回复:
response.setHeader("Pragma","No-Cache");
response.setHeader("Cache-Control","No-Cache");
response.setDateHeader("Expires",0);

这样设置只是设置JSP页面不缓存,并不是设置图片不缓存.
那有办法设置图片不缓存吗?我不会.......
[/Quote]

有办法,就是做1个过滤器,让所有对图片的请求都经过你的过滤器,在过滤器中设置图片不缓存就行,但这个开发相对复杂点。

JS写的比较简单。
BearRui 2008-10-09
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 xietingyan 的回复:]
$("imagePreview").src = imagesrc+"?tempid="+Math.random(); 可以,解决了
虽然我不明白为什么
$("imagePreview").src = imagesrc+"?tempid="+Math.round(Math.random()*100);
这个不行,但是至少问题解决了,

看到template Internet files文件夹下的那么多图片的名字,我想是不是可以改成用一个计数来代替random,
[/Quote]

因为你使用Math.round(Math.random()*100)很容易得到重复的数据,所以有时行有时不行,Math.random()得到重复数据的概率很低
xietingyan 2008-10-09
  • 打赏
  • 举报
回复
$("imagePreview").src = imagesrc+"?tempid="+Math.random(); 可以,解决了
虽然我不明白为什么
$("imagePreview").src = imagesrc+"?tempid="+Math.round(Math.random()*100);
这个不行,但是至少问题解决了,

看到template Internet files文件夹下的那么多图片的名字,我想是不是可以改成用一个计数来代替random,
xietingyan 2008-10-09
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 BearRui 的回复:]
response.setHeader("Pragma","No-Cache");
response.setHeader("Cache-Control","No-Cache");
response.setDateHeader("Expires",0);

这样设置只是设置JSP页面不缓存,并不是设置图片不缓存.
[/Quote]那有办法设置图片不缓存吗?我不会.......
szhshaozhihua 2008-10-09
  • 打赏
  • 举报
回复
最好是给予request的请求,那样的话就不会再你重新提交了修改的图片后还不更新了。
BearRui 2008-10-09
  • 打赏
  • 举报
回复
response.setHeader("Pragma","No-Cache");
response.setHeader("Cache-Control","No-Cache");
response.setDateHeader("Expires",0);

这样设置只是设置JSP页面不缓存,并不是设置图片不缓存.
BearRui 2008-10-09
  • 打赏
  • 举报
回复
试试:

$("imagePreview").src = imagesrc+"?tempid="+Math.random();
xietingyan 2008-10-09
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 Landor2004 的回复:]
浏览器也设置一下
工具--internate选项--设置--每次访问此页时
[/Quote]用过了,用firefox,chrome,或者IE该设置都没有问题,问题是客户不一定会改
Landor2004 2008-10-09
  • 打赏
  • 举报
回复
浏览器也设置一下
工具--internate选项--设置--每次访问此页时
xietingyan 2008-10-09
  • 打赏
  • 举报
回复
修改后手动清空缓存后可以正确显示,有没有js代码可以清除缓存的,难道是我贴进去的那3行代码有错误?
<head>
<%
response.setHeader("Pragma","No-Cache");
response.setHeader("Cache-Control","No-Cache");
response.setDateHeader("Expires",0);
%>
<title>设置页面</title>
<link href="main.css" rel="stylesheet" type="text/css">
<script language="javascript" src="../js/splitpage.js"></script>
</head>
笨沙发 2008-10-09
  • 打赏
  • 举报
回复
你这么改应该没错吧,你清空缓存看下
lihan6415151528 2008-10-09
  • 打赏
  • 举报
回复
你把浏览器记录都全部删除了运行下再
xietingyan 2008-10-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 lihan6415151528 的回复:]
//JSP禁止缓存代码

response.setHeader("Pragma","No-cache");

response.setHeader("Cache-Control","no-cache");

response.setDateHeader("Expires", 0);
[/Quote]这些我都加了啊,加了后就是有时候出现修改的,有时候出现修改前的.
lihan6415151528 2008-10-09
  • 打赏
  • 举报
回复
 <HEAD>
      <META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">
    </HEAD>
tiyuzhongxin789 2008-10-09
  • 打赏
  • 举报
回复
我正在学习,关注!!!
支持!!!

81,092

社区成员

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

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