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

来源:互联网 发布:拳头暴君淘宝店 编辑:程序博客网 时间:2024/04/29 20:07
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>
 
原创粉丝点击