遇到的问题---jsp的ajax请求相同页面,服务端更新后浏览器仍然显示第一次的内容
来源:互联网 发布:base64编码c源码 编辑:程序博客网 时间:2024/06/07 20:26
一、问题的提出
在Ajax开发中,会遇到浏览器缓存内容的问题,比如,某个元素注册了鼠标事件(onmouseover),事件触发后会通过xmlhttprequest到服务器获取内容,在不刷新页面的情况下,浏览器会缓存第一次请求的内容,服务端更新后浏览器仍然显示第一次的内容。通常,这种请求都是xmlhttprequest发起的GET请求。根据 HTTP 规范,GET 用于信息获取,而且应该是幂等的。也就是说,当使用相同的URL重复GET请求会返回预期的相同结果时,GET方法才是适用的。当对一个请求有副作用的时候(例如,提交数据注册新用户时),应该使用POST请求而不是GET。所以浏览器会对GET请求做缓存处理。
二、问题解决办法:
1. GET请求URL后加随机数,让服务器认为不是相同的请求。
4. 服务端响应请求时加 header("Cache-Control: no-cache, must-revalidate"); (PHP)
1.<%
//设置无缓存
response.setHeader("progma","no-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires",0);
%>
2.设置页面Nocache方式,即每次访问此页面,均需要从服务器重新读取,而不是使用缓存中存在的此页面。
在jsp页面的<head></head>中间添加如下代码。
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
在Ajax开发中,会遇到浏览器缓存内容的问题,比如,某个元素注册了鼠标事件(onmouseover),事件触发后会通过xmlhttprequest到服务器获取内容,在不刷新页面的情况下,浏览器会缓存第一次请求的内容,服务端更新后浏览器仍然显示第一次的内容。通常,这种请求都是xmlhttprequest发起的GET请求。根据 HTTP 规范,GET 用于信息获取,而且应该是幂等的。也就是说,当使用相同的URL重复GET请求会返回预期的相同结果时,GET方法才是适用的。当对一个请求有副作用的时候(例如,提交数据注册新用户时),应该使用POST请求而不是GET。所以浏览器会对GET请求做缓存处理。
二、问题解决办法:
1. GET请求URL后加随机数,让服务器认为不是相同的请求。
例 "http://www.example.com/index.php?class=aitcle&page=5&_t=" + new Date().getTime()
2. 在ajax发送请求前加上 xmlHttpRequest.setRequestHeader("If-Modified-Since","0")
3. 在ajax发送请求前加上 xmlHttpRequest.setRequestHeader("Cache-Control","no-cache");4. 服务端响应请求时加 header("Cache-Control: no-cache, must-revalidate"); (PHP)
5. 使用POST代替GET,浏览器不会对POST做缓存
6.使用过滤器Filter清除缓存
具体参看本人博文(在最低端):Jsp过滤器Filter配置过滤类型汇总
1.<%
//设置无缓存
response.setHeader("progma","no-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires",0);
%>
2.设置页面Nocache方式,即每次访问此页面,均需要从服务器重新读取,而不是使用缓存中存在的此页面。
在jsp页面的<head></head>中间添加如下代码。
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
- 遇到的问题---jsp的ajax请求相同页面,服务端更新后浏览器仍然显示第一次的内容
- css文件更新后浏览器网页仍然显示以前的页面解决方法
- 通达OA web页面与精灵显示内容更新后不一致的问题
- ajax提交相同url,重复发送请求后台,页面无更新的问题解决
- 解决jsp页面请求action后中文乱码的问题
- 关于分页插件pagination的应用及遇到的问题(用ajax请求数据进行拼接后分页显示)
- 解决IE浏览器再重复请求请求内容相同的情况下调用本地缓存的问题!
- 如何让ajax技术显示数据的jsp页面第一次加载就加载默认查询数据
- ajax跨域请求,页面和java服务端的写法
- ajax请求时遇到的问题
- Ajax请求Json遇到的问题总结
- Ajax请求传递参数遇到的问题
- jsp 请求转发 遇到的cookies问题
- ajax请求jsp文件的问题
- 解决IDEA开发JavaWeb项目修改了HTML或Servlet/JSP后刷新浏览器无法及时显示修改后的页面的问题
- WCF ajax调用,同一浏览器窗口的多个请求在服务端阻塞,只能顺序执行的问题
- ajax异步请求内容后的退步和刷新的问题
- IOS9 更新后遇到的问题
- 树的最小高度
- pull解析xml
- 深入探讨CCD工业摄像机相关技术特性
- ARM 汇编指令
- Robotium自动化测试利用InstrumentationTestRunner和XmlSerializer导出xml报告到手机里
- 遇到的问题---jsp的ajax请求相同页面,服务端更新后浏览器仍然显示第一次的内容
- linux shell脚本参数简要说明
- Java 关键字instanceof的应用
- java开发异常类型汇总
- Linux中useradd命令不可用问题的解决
- 支持向量机通俗导论(理解SVM的三层境界)
- 长期目标
- ios tableView那些事 (十七) UITableView的下拉刷新
- webkit编译问题,烦请哪位朋友指点指点