zoukankan      html  css  js  c++  java
  • IE缓存怎么消除? 临时文件 javascript 脚本 清理

    IE缓存怎么消除? 临时文件 javascript 脚本 清理

    禁用客户端缓存   
       HTM网页   
       <META    HTTP-EQUIV="pragma"    CONTENT="no-cache">   
       <META    HTTP-EQUIV="Cache-Control"    CONTENT="no-cache,    must-revalidate">   
       <META    HTTP-EQUIV="expires"    CONTENT="Wed,    26    Feb    1997    08:21:57    GMT">   
       ASP网页   
       <%   
           Response.Expires    =    -1   
           Response.ExpiresAbsolute    =    Now()    -    1   
           Response.cachecontrol    =    "no-cache"   
       %>   
       PHP网页   
       header("Expires:    Mon,    26    Jul    1997    05:00:00    GMT");   
       header("Cache-Control:    no-cache,    must-revalidate");   
       header("Pragma:    no-cache");   
       JSP   
               response.setHeader("Pragma","No-Cache");   
               response.setHeader("Cache-Control","No-Cache");   
               response.setDateHeader("Expires",    0);   
       C#中禁止cache的方法!   
       Response.Buffer=true;   
       Response.ExpiresAbsolute=System.DateTime.Now.AddSeconds(-1);   
       Response.Expires=0;   
       Response.CacheControl="no-cache";

    加入   
       <MEAT    HTTP-EQUIV="Pragma"    CONTENT="no-cache">   
       不缓存。

    一、Expires(期限)   
       说明:可以用于设定网页的到期时间。一旦网页过期,必须到服务器上重新调阅。   
       用法:<META    HTTP-EQUIV="expires"    CONTENT="Wed,    26    Feb    1997    08:21:57    GMT">   
       注意:必须使用GMT的时间格式。   
        
        
       二、Pragma(cache模式)   
        
       说明:禁止浏览器从本地机的缓存中调阅页面内容。   
       用法:<META    HTTP-EQUIV="Pragma"    CONTENT="no-cache">     
       注意:这样设定,访问者将无法脱机浏览。   
        
       三、脚本实现   
       <%   
       response.expires    =    0     
       response.expiresabsolute    =    now()    -    1     
       response.addHeader    "pragma","no-cache"    response.addHeader    "cache-control","private"     
       Response.cachecontrol    =    "no-cache"   
       %>

    IE浏览器访问一个网页的时候,首先会到临时文件夹中去寻找和这个网页相关的各个文件(如各种图片)。如果在临时文件夹中找到了一些文件,那么浏览器就会使用这些临时文件夹中的文件,而不去服务器下载这些文件。   
        
       不幸的是,我的服务器上的文件是经常变化的,如果IE优先考虑临时文件夹中的文件,那么就不能反映出我服务器上的变化。   
        
       现在有两个解决办法,但都有缺陷:   
       一是使用网页的自刷新,但是刷新速度快的话会有闪烁,不符合我其他方面的要求。   
       二是在IE设置中设成“每次访问此页时检查”。此时IE不考虑临时文件夹中的内容,直接从服务下载各个文件。但是这种办法需要用户进行设置,对用户来说有点麻烦。而且这样的设置会影响用户访问其他网站的速度。  

    ###############################################

    html方法:

    <META   HTTP-EQUIV="pragma"   CONTENT="no-cache">
    <META   HTTP-EQUIV="Cache-Control"   CONTENT="no-cache,   must-revalidate">
    <META   HTTP-EQUIV="expires"   CONTENT="Wed,   26   Feb   1997   08:21:57   GMT">

    php方法:

    header("Expires:   Mon,   26   Jul   1997   05:00:00   GMT");
    header("Cache-Control:   no-cache, must-revalidate");
    header("Pragma:   no-cache");

    6、禁止图片缓存:在图片后面加一个随机参数,如:

    <img src=”images/bg.gif?temp_id=156404/>
    <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
    <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
    <META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
    <META HTTP-EQUIV="Expires" CONTENT="0">
    <META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE"> <!-- 禁止浏览器缓存页面 -->

    6、那么如何禁止IE缓存,采用Ajax技术数据更新不及时
    方法1:服务器端代码加入response.setHeader("Cache-Control",   "no-cache,   must-revalidate");  
    方法2:用JavaScript在Ajax提交的时候加入一个随机数作为URL中的一个参数。req.open(url   +   "&"   +   Math.random).  
    原因:IE中如果XMLHttpRequest提交的URL与历史一样则使用缓存,根本不向服务器端提交。因此无法取到刚提交的数据。

    php中ajax清除缓存问题----IE缓存不能清除

      在ajax的应用中,当用户访问一次后,再进行访问当XMLHttpRequest请求不变的时,在ie中会出现这样的现象,那就是取数据不会到服务器端 取,而是直接从ie的缓存中取,则会就是ie的缓存问题。在ajax中解决缓存的问题采用时间戳的方式,即为每个XNLHttpRequest请求后面加 一个时间戳的标志,从而保证每次请求都是新的从而解决ie缓存问题,下面是简单的例子。

    1、关键的代码如下:Java代码  

    1. //给url地址增加时间戳,骗过浏览器,不读取缓存   
    2. function convertURL(url) {   
    3.         //获取时间戳   
    4.         var timstamp = (new Date()).valueOf();   
    5.         //将时间戳信息拼接到url上   
    6.         //url = "AJAXServer"   
    7.         if (url.indexOf("?") >= 0) {   
    8.                 url = url + "&t=" + timstamp;   
    9.         } else {   
    10.                 url = url + "?t=" + timstamp;   
    11.         }   
    12.         return url;   
    13. }  

     下面是简单的例子,验证用户点击了验证按钮几次的例子1、首先看js的代码Java代码  

    1. function verify() {   
    2.       //通过jquery方式获取页面文本框中的数值   
    3.         var url = "AJAXServer?name=" + encodeURI(encodeURI($("#userName").val()));   
    4.         //通过convertURL对传入的数值做特殊处理,使每个数据都带有一个时间戳,从而产生不同的XHTTPRequest请求   
    5.         url = convertURL(url);   
    6.         //调用jquery中的get请求方法向服务器端传值,定义一个回调函数在页面显示服务器端返回的数据   
    7.         $.get(url,null,function(data){   
    8.                 $("#result").html(data);   
    9. });   
    10. }   
    11. //给url地址增加时间戳,骗过浏览器,不读取缓存   
    12. function convertURL(url) {   
    13.         //获取时间戳   
    14.         var timstamp = (new Date()).valueOf();   
    15.         //将时间戳信息拼接到url上   
    16.         //url = "AJAXServer"   
    17.         if (url.indexOf("?") >= 0) {   
    18.                 url = url + "&t=" + timstamp;   
    19.         } else {   
    20.                 url = url + "?t=" + timstamp;   
    21.         }   
    22.         return url;   
    23. }  

     Java代码  

    1. 2、简单的html验证页面代码如下:  
    2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"   
    3.                 "http://www.w3.org/TR/html4/loose.dtd">   
    4. <html>   
    5. <head>   
    6.     <title>用户名校验ajax实例</title>   
    7.     <!--<meta http-equiv="content-type" content="text/html; charset=gb2312" />-->   
    8.     <script type="text/javascript" src="jslib/jquery.js"></script>   
    9.     <script type="text/javascript" src="jslib/verify.js"></script>   
    10. </head>   
    11. <body>   
    12.         <!--ajax方式下不需要使用表单来进行数据提交,因此不用写表单标签-->   
    13.         <!--ajax方式不需要name属性,需要一个id的属性-->   
    14.         <input type="text" id="userName" />   
    15.         <input type="button" value="校验" onclick="verify()"/>   
    16.         <!--这个div用于存放服务器段返回的信息,开始为空-->   
    17.         <!--id属性定义是为了利用dom的方式找到某一个节点,进行操作-->   
    18.         <div id="result"></div>   
    19. </body>   
    20. </html>3、服务器端得javaservlet代码  
    21. public class AJAXServer extends HttpServlet{   
    22.   
    23.         protected void doPost(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {   
    24.                 doGet(httpServletRequest, httpServletResponse);   
    25.         }   
    26.   
    27.         protected void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {   
    28.                 try{   
    29.   
    30.                         httpServletResponse.setContentType("text/html;charset=utf-8");   
    31.                         PrintWriter out = httpServletResponse.getWriter();   
    32.   
    33.                         Integer inte = (Integer) httpServletRequest.getSession().getAttribute("total");   
    34.                         int temp = 0;   
    35.                         if (inte == null) {   
    36.                                 temp = 1;   
    37.                         } else {   
    38.                                 temp = inte.intValue() + 1;   
    39.                         }   
    40.                         httpServletRequest.getSession().setAttribute("total",temp);   
    41.   
    42.                         //1.取参数   
    43.                         String old = httpServletRequest.getParameter("name");   
    44.                         String name = URLDecoder.decode(old,"UTF-8");   
    45.                         //2.检查参数是否有问题   
    46.                         if(old == null || old.length() == 0){   
    47.                                 out.println("用户名不能为空");   
    48.                         } else{   
    49.                                 //3.校验操作   
    50. //                                String name = old;   
    51.                                 if(name.equals("wangxingkui")){   
    52.                                         //4。和传统应用不同之处。这一步需要将用户感兴趣的数据返回给页面段,而不是将一个新的页面发送给用户   
    53.                                         //写法没有变化,本质发生了改变   
    54.                                         out.println("用户名[" + name + "]已经存在,请使用其他用户名, " + temp);   
    55.                                 } else{   
    56.                                         out.println("用户名[" + name + "]尚未存在,可以使用该用户名注册, " + temp);   
    57.                                 }   
    58.                         }   
    59.                 } catch(Exception e){   
    60.                         e.printStackTrace();   
    61.                 }      
    62.         }   
  • 相关阅读:
    封装成帧、帧定界、帧同步、透明传输(字符计数法、字符串的首尾填充法、零比特填充的首尾标志法、违规编码法)
    计算机网络之数据链路层的基本概念和功能概述
    物理层设备(中继器、集线器)
    计算机网络之传输介质(双绞线、同轴电缆、光纤、无线电缆、微波、激光、红外线)
    计算机网络之编码与调制
    0953. Verifying an Alien Dictionary (E)
    1704. Determine if String Halves Are Alike (E)
    1551. Minimum Operations to Make Array Equal (M)
    0775. Global and Local Inversions (M)
    0622. Design Circular Queue (M)
  • 原文地址:https://www.cnblogs.com/yi88/p/3184403.html
Copyright © 2011-2022 走看看