`

(转)页面缓存, jsp 缓存, html 缓存, ajax缓存,解决方法

    博客分类:
  • Web
 
阅读更多

注:本文转自

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

 

(看了旺旺老师的AJAX视频  里面说IE缓存机制只对get请求有效  这个要注意下)

 

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

 

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页面缓存

 

  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();

 

方法三:

在XMLHttpRequest发送请求之前加上XMLHttpRequest.setRequestHeader("If-Modified-Since","0")

一般情况下,这里的XMLHttpRequest不会直接使用
你应该可以找到这样的代码
XXXXX.send(YYYYYY);
那么,就把它变成
XXXXX.setRequestHeader("If-Modified-Since","0");
XXXXX.send(YYYYYY);

 

 

总结:原引(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。

 

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

 

分享到:
评论

相关推荐

    ajax与jsp清除缓存

    以下是一些常用的JSP缓存清除策略: 1. **设置响应头**:通过设置`response.setHeader()`方法,可以控制HTTP响应头,从而控制浏览器的缓存行为。例如,设置`Pragma`、`Cache-Control`和`Expires`头字段可以告诉...

    JSP清除页面缓存常用方法小结

    本文将详细介绍几种JSP中清除页面缓存的常见方法。 一、清除页面缓存 在JSP页面中,可以通过设置HTTP响应头来禁止浏览器缓存页面。以下代码片段展示了如何在JSP中实现这一目标: ```jsp response.setHeader(...

    js、css、img等浏览器缓存问题的2种解决方案.docx

    * JSP 页面缓存 cache 技术--扫瞄器缓存介绍及实现方法 * Js 代码中,ajax 恳求地址后加随机数防止扫瞄器缓存的缘由详解 * AngularJS 中$http 缓存以及处理多个$http 恳求的方法 * JS 实现前端缓存的方法

    Ajax网站开发典型实例JSP源码包

    在这个实例中,可能包含了一系列使用Ajax调用JSP页面的例子。例如,用户在前端填写表单后,可以使用Ajax异步提交数据到JSP,JSP处理数据后再通过Ajax响应返回结果。这样可以避免页面的刷新,提高交互性。 4. **...

    JSP转成HTML

    4. **利用CDN服务**:将JSP渲染为HTML后,可以通过内容分发网络(CDN)缓存这些静态HTML文件,减少服务器负载,同时提高页面加载速度和SEO效果。 5. **使用AJAX**:对于需要部分动态更新的页面,可以使用AJAX技术从...

    提升JSP页面响应速度的七大秘籍绝招

    这些秘籍绝招涵盖了 JSP 页面的生命周期、Servlet 的 init() 方法、自动重载功能、HttpSession 的使用、页面输出压缩等方面。 秘籍一:在 Servlet 的 init() 方法中缓存数据 在 Servlet 的 init() 方法中缓存一些...

    ajax jsp

    4. **JSP在服务器端的角色**:JSP页面可以处理来自Ajax请求的参数,执行必要的业务逻辑,然后返回响应数据。这可能包括数据库查询、计算或者其他复杂的服务器操作。 5. **响应处理**:在客户端,通过XMLHttpRequest...

    JSP.Ajax网站开发典型实例

    **JSP与Ajax网站开发典型实例详解** 在Web开发领域,JSP(JavaServer Pages)和Ajax(Asynchronous JavaScript and XML)是两种重要的技术,它们共同构建了动态、交互式的网页应用。本实例将深入探讨如何结合使用这...

    jsp页面加载时提示loading

    综上所述,解决"jsp页面加载时提示loading"的问题需要从多方面进行排查和优化,包括页面内容优化、服务器性能提升、网络条件改善、代码错误检查、缓存策略调整、服务器配置优化、数据库性能优化、AJAX请求优化、...

    jsp+ajax 动态树

    在这个案例中,“jsp+ajax 动态树”指的是利用JavaServer Pages (JSP) 和 Asynchronous JavaScript and XML (AJAX) 技术来创建一个无需页面刷新即可更新的交互式树形视图。 **JSP(JavaServer Pages)**是Java平台...

    ajax+jsp分页控件

    这里的“ajax+jsp分页控件”是一种技术解决方案,它允许用户在不刷新整个页面的情况下实现数据的分页加载,提供了更加流畅的用户体验。这种控件通常具有美观的界面设计,可以无缝地整合到各种Web应用中。 **Ajax...

    jsp+ajax聊天室

    JSP是服务器端的技术,用于生成动态网页,而AJAX则是一种在不刷新整个页面的情况下与服务器交换数据并更新部分网页的技术。这种组合可以创建高效、响应迅速的用户界面,提供类似桌面应用的用户体验。 在描述中提到...

    Jsp-To-Html.rar_Jsp To Html_java html_jsp html_jsp to ht_jsp网站

    【JSP到HTML转换】是Web开发中的一种技术策略,主要目的是将动态生成的JSP页面转换为静态的HTML文件,以提高网站的性能和用户体验。JSP(Java Server Pages)是一种基于Java的服务器端脚本语言,它允许开发者在HTML...

    一个基于ajax和java缓存的聊天室

    "一个基于Ajax和Java缓存的聊天室"这个标题揭示了该项目的核心技术栈,即使用Ajax进行实时通信,以及Java作为后端处理数据并实现缓存功能,构建了一个在线聊天平台。Ajax(Asynchronous JavaScript and XML)是一种...

    Servlet+jsp+AJax的分页及增删改查

    总结来说,Servlet处理业务逻辑和数据库交互,JSP用于生成动态页面,而Ajax则实现了页面的无刷新更新,提高了用户体验。这个示例项目"Servlet+jsp+AJax的分页及增删改查"提供了一个学习和实践这些技术的平台,有助于...

    jsp+servlet+Ajax 购物车

    开发者可以在JSP页面中编写HTML、CSS以及嵌入的Java代码,通过`&lt;jsp:include&gt;`或`&lt;jsp:forward&gt;`标签与Servlet进行通信,实现数据的传递和页面的跳转。 【Servlet】:Servlet是Java的一个标准API,用于扩展服务器的...

    jsp 通讯录管理系统 (Jsp+Ajax+MySq)

    通常使用JavaScript库(如jQuery)中的AJAX方法,通过XMLHttpRequest对象向服务器发送异步请求,接收响应后更新DOM树,从而局部刷新页面。 3. MySQL: MySQL是一个广泛使用的开源关系型数据库管理系统,具有高性能...

    JSP+Ajax二级联动实例

    本实例将探讨如何使用JSP(JavaServer Pages)和Ajax(Asynchronous JavaScript and XML)技术实现二级联动效果。 首先,我们需要理解JSP和Ajax的基础概念。JSP是Java的一种服务器端脚本语言,它允许开发者在HTML中...

    ajax动态树型菜单(jsp)

    5. **JSP后端**:在Java后端,你需要创建一个JSP页面或者Servlet来处理Ajax请求,查询数据库(如果数据存储在那里)并返回JSON或XML格式的子节点数据。 6. **响应处理**:在前端,接收到Ajax请求的响应后,解析JSON...

Global site tag (gtag.js) - Google Analytics