zoukankan      html  css  js  c++  java
  • web 开发之js---页面缓存, jsp 缓存, html 缓存, ajax缓存,解决方法

    有关页面缓存问题.这个问题上网找了好多.但发觉各种解决方法,都彼此分离,没有一篇统一的解决方法,本人近日,也遇到了页面缓存的问题,根据网上各页面缓存的解答,做了一个总结。

    1.服务器端缓存的问题, 防止JSP页面缓存:

    1. <%  
    2. // 将过期日期设置为一个过去时间  
    3. response.setHeader("Expires", "Sat, 6 May 1995 12:00:00 GMT");  
    4. // 设置 HTTP/1.1 no-cache 头  
    5. response.setHeader("Cache-Control", "no-store,no-cache,must-revalidate");  
    6. // 设置 IE 扩展 HTTP/1.1 no-cache headers, 用户自己添加  
    7. response.addHeader("Cache-Control", "post-check=0, pre-check=0");  
    8. // 设置标准 HTTP/1.0 no-cache header.  
    9. response.setHeader("Pragma", "no-cache");  
    10. %>  

    当然,每一个页面都包含这些代码会很繁琐,可以通过自定义过滤器(Filter)的方法来处理相关的页面

    2.防止html页面缓存

    [xhtml] view plaincopy
    1. <meta http-equiv="pragma" content="no-cache">  
    2. <meta http-equiv="cache-control" content="no-cache">  
    3. <meta http-equiv="expires" content="0">     

    3.防止Ajax缓存

    如果,你的页面,已经设置了防止JSP,HTML的页面缓存,但发觉页面缓存,始终存在,就要考虑是否Ajax造成的页面缓存了。

    1)设置了,如上1,2之后

    Ajax缓存,产生的原因是:request, url的地址上:
    IE中如果XMLHttpRequest提交的URL与历史一样则使用缓存,根本不向服务器端提交。因此无法取到刚提交的数据。

    针对ajax,需要如下设置:

    方法一:加时间戳 var url = BaseURL + "&timeStamp=" + new Date().getTime();
    方法二:加随机数 var url = BaseURL + "&r=" + Math.random();

    总结:原引(http://www.javaeye.com/topic/150162)

    在jsp页面中,光是使用html的<meta> tag是无法禁止缓存的。一定要加上

    response.setHeader("Pragma","No-cache"); 
    response.setHeader("Cache-Control","no-cache"); 
    response.setDateHeader("Expires", 0);

    有人肯定会说,这个跟html的tag设置没有不同啊。的确,我也觉得,但实践证明,没有这几句,光靠html tag不行。

    所以当action会返回页面时,有以下这两种情况:

    a,返回的页面没有写上上面的禁止cache的语句(或者只写了html tag)。IE存储的是URL link + page result(cache eabled)。这也就是导致了之前为什么还会有cache的原因

    b,返回的页面写上了禁止cache语句 。IE存储的是URL link + page result(cache disabled)。这样才能够实现到我们想要的目的。每次都会真正的发出request。

    总结:页面缓存没有统一的解决方法,要具体问题具体分析.

    http://blog.csdn.net/oklzh/article/details/4445722

    http://www.blogjava.net/JAVA-HE/archive/2008/11/25/242420.html js write()

  • 相关阅读:
    编写一个函数将一个十六进制数的字符串参数转换成整数返回?
    设置一段文字的大小为6px?
    写clone()方法时,通常都有一行代码,是什么?
    abstract class和interface有什么区别?
    JDBC中的Statement 和PreparedStatement的区别?
    什么是MVC模式?   
    Struts2的Action中获取request对象的几种方式?
    Struts2的功能扩展点有哪些?
    说说&和&&的区别?
    Struts2里面有什么隐式对象?
  • 原文地址:https://www.cnblogs.com/pengkunfan/p/4040137.html
Copyright © 2011-2022 走看看