关于jsp页面缓存的问题
遇到的问题:图片修改之后显示的还是原图片,要手动刷新才显示修改之后的。
知道是缓存的原因,在网上找来一顿基本都是这段代码:
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);
但是无效,有高人指点一下吧。
[解决办法]
图片修改之后显示的还是原图片
你不刷新的话肯定还是显示原来的图片啊
另外,页面清空缓存的也就是你上面那段代码了
[解决办法]
如果是 [修改之后跳转到另一个页面 ]
就不存在刷新问题,楼主把这两个页面间的关系说清楚点
修改后怎么跳转到另一个页面的??
页面清空缓存 话 还有服务器端代码,你那个是客户端代码
[解决办法]
用的是什么服务器,
修改图片后要刷新页面才能看到的,
如果不是就清空下页面的缓存.
重启下服务器..看看..
[解决办法]
lz先关闭tomcat 然后 删除一下tomcat/work 下的所有文件,然后再启动tomcat反问一下
怀疑是tomcat没有完全编译
[解决办法]
如果是页面跳转后发现更新的内容不能及时显示出来,可以试试用reponse.sendRedirct(),让页面重定向
[解决办法]
有可能是IE的问题
[解决办法]
是IE的缓存,在你显示图片的JS中写个随机数做参数试下.
[解决办法]
加上这个css试试
<style type="text/css">
<!--
#newPreview {FILTER: progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)}
-->
</style>
[解决办法]
再试试这个
response.setHeader("Expires","Mon, 26 Jul 1997 05:00:00 GMT");
response.setHeader("Cache-Control","no-cache, must-revalidate");
response.setHeader("Pragma","no-cache");
如果再不行,可以让页面自动刷新,比如每1分钟刷新一次,这样总比手动刷新才更新的好
<meta http-equiv="refresh" content="60" />这句是自动刷新,加在<head></head>之间
[解决办法]
关注中.
[解决办法]
你可以在页面置一个刷新的按钮
类似的我也遇过 不好解决
[解决办法]
我在公司就是用这个方法去掉页面,但是由于公司业务需求,一般不去掉,因为缓存会提高效率,去掉有的页面就打不开了,ls的方法也不好啊,如果需要做按钮刷新,还不如直接按F5呢,其实图片的缓存时间本身就是要比文字长些,我在公司后台修改图片,前台也不是马上就会自动刷出来,我觉得不好实现,其实自动刷新是个很好的方法,lz何必让他停下来呢?lz可以去看看各大门户网站,凡是需要数据不断更新的页面,比如新浪NBA数据库页面,他也不可能做到后台改完数据,前台马上就刷出来,去掉缓存的方法如果用在大的页面上是不可取的,这会大大的降低效率,自动刷新是解决这个问题的一个不错的方法,我是这样认为的
[解决办法]
response.setHeader("Refresh",0);再试试这个
[解决办法]
去掉页面也加上,一起用试试
[解决办法]
问下lz的修改功能,页面显示的顺序是怎样的?
[解决办法]
搞错了...搞错了...
<input type="button" name="update" onclick="javascript:window.location.reload()" value="修改"/>
再试试
[解决办法]
贴页面代码出来
[解决办法]
还是没有帮到lz,不好意思了
[解决办法]
[解决办法]
那些头对IE好像没有用的。
用随机数吧:
<%Random ran = new Random();%><img src=" <%=request.getContextPath()+imgsrc + "?ran=" + ran.nextDouble()%>">
[解决办法]
我也遇到过这个问题 我用这种有是可以,有时不可以
<%
Random ran = new Random();
%>
<img src=" <%=request.getContextPath()+imgsrc + "?ran=" + ran.nextDouble()%>">
[解决办法]
你用的是struts2.0在返回展现修改后的页面时用type="redirct"就可以
[解决办法]
不行直接把图片写入输出流试试
[解决办法]
是不是与“工具”/“internet 选项”/“常规”/设置 里的配置有关??
[解决办法]
response.setDateHeader("Expires", 0);
改成下面的试试:
response.setDateHeader("Expires", 1);
[解决办法]
看看这个,我们做项目的时候是用的这个。
要是好使的话给我加分啊,在线等。
<%
/*
response.setHeader("Cache-Control","no-cache");
response.setHeader("Cache-Control","no-store");
response.setDateHeader ("Expires", 0);
response.setHeader("Pragma","no-cache");
*/
%>
[解决办法]
当然刷新了
比如我的图片是 1.jpg
修改之后跳转到另一个页面
另一个页面引用这个图片 <img src="1.jpg">
可结果还是原图
然后刷新一下就是新图了
当然你所说的修该应该是修改数据库中的所保存的数据,然后另一页面是引用数据库中的数据,
就是在你跳到那一张页面的时候你自动刷新一次。这样就OK了。(而自动刷新是说你跳到那一张要自动刷新一次就行了。)
[解决办法]
是不是你修改后没有关闭数据库连接啊?这样的话用的还是上次的连接就可能显示不了·
[解决办法]
不知道location.replace("****.action?params=" + mm);行不行
搂主可以试试用这个来调用action
[解决办法]
楼主找的 禁止代理服务器 和 浏览器 缓存的代码是正确的。
但是放错地方了!
你只是让 代理服务器以及浏览器 不缓存你的jsp页面,但是 没有告诉它们 不缓存你的 图片。
非常可惜的是,你的 图片修改之后又没有换名字。
解决方法,对 图片访问也加上 上述 禁止缓存的代码。
这个加,不是在jsp能做到的,因为 浏览器 解析 jsp 中 的 html代码之后,下载图片时,你的禁止 缓存的代码被绕开了。
所以 你需要用 servlet 来控制 图片的下载 ,告诉 链路上的各个代理服务器和最终的浏览器,这个图片不能缓存。
servlet 是可插拔的,你只要再写一个 class 就行了,在 web.xml 中部署一下就可了。原有代码不用修改。
原有代码不用修改,所以,这是 非侵入式 设计。
具体信息,你就自己找 servlet 或者 filter 相关资料吧,我就不写代码了。
整个class不会超出20行代码。
[解决办法]
关注一下啊
[解决办法]
图片有时候是有这个问题