不从缓存中读取图片(转)

本文介绍了在遇到IE浏览器因缓存导致图片未更新的问题时,提供的两种解决方案:通过在图片URL后添加时间戳参数强制刷新,以及利用HTTP头信息设置`Pragma: no-cache`来防止缓存。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

IE的缓存提高了网络传输的效率,但是有时候也给我们带来了麻烦,比如在某个模块的修改页面上,我们把其中的图片替换掉,但是图片的名字和原来的图片名字一样(比如为了方便管理和统一图片命名,每个物品对应的图片的名字都用物品的ID命名),只有的话因为缓存你修改后看到的图片还是修改前的图片。当时到网上取搜索了一下,把我的解决方法贴出来,希望对你有所帮助。下面两种方法我都测试过了。

    先说明一下,当时我使用下面的代码是没能解决问题的

<META HTTP-EQUIV="pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate">
<META HTTP-EQUIV="expires" CONTENT="0">
<%
response.setHeader(
"Cache-Control","no-store");
response.setHeader(
"Pragrma","no-cache");
response.setDateHeader(
"Expires",-1);
%>

    方法一:在后面加参数使得图片不从缓存中读取
< script >
document.write(
" <img src=<%=result.getPhoto()%> " + " ?temp= " + Date.parse( new Date()) + " id='photo' width='120' height='120'/> " );
</ script >

    方法二:光使用<META HTTP-EQUIV="Pragma" CONTENT="no-cache">是不起作用的,IE仍然会cache数据的。 通常IE在一页的数据没有满32K时它是不会缓存的。
如果把 no-cache 直接放在最前面的话,只要缓存中的数据没有到32K,当时ie是不会缓存的,但是当读过了no-cache标志,到了HTML其他部分时,如果数据超过了32K,IE仍然会将数据缓存起来。 这是由于IE分析一个页面的语法时是从上到下读取的,正确的方法如下:
< HTML >
< HEAD >
< META HTTP-EQUIV ="REFRESH" CONTENT ="5" >
< TITLE > 标题 </ TITLE >
</ HEAD >
< BODY >
   页面的其它部分。。。。。
</ BODY >
< HEAD >
  
< META HTTP-EQUIV ="PRAGMA" CONTENT ="NO-CACHE" >
</ HEAD >
</ HTML >
 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值