关于jquery.ajax的缓存

来源:互联网 发布:mac 怎么读取exe 编辑:程序博客网 时间:2024/06/05 20:37

项目中使用jquery的ajax中,在一些浏览器缓存数据的设置情况下,会直接用上一次ajax的请求结果,而不再请求一次。

比如,在ie11 > 工具 > Internet选项 > 设置选“每次访问网页时”。
这里写图片描述


因为浏览器是通过URL,来判断两次请求是否相同。
所以,我们可以:

  • 通过在URL中添加时间戳的方式,使浏览器认为是两次不同的请求,从而不使用缓存的数据。
  • 通过jquery的ajax方法,有个cache的配置项,也以类似的方式轻松解决此问题。

但是,每个ajax请求都书写一个cache的配置,非常费劲。
所以,我们可以使用,jQuery.ajaxSetup() 方法设置全局 AJAX 默认选项。
比如:

<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Ajax demo</title></head><script type="text/javascript" src="http://code.jquery.com/jquery-1.11.3.js"></script><script type="text/javascript">alert('$.ajaxSetup()...');$.ajaxSetup({    cache : false});</script><script type="text/javascript">function touchAjax() {    $.ajax({        url : 'MyServlet',        success : function(data) {            alert('success request...');        },        error : function(XMLHttpRequest, errorInfo, exception) {            alert('error -> ' + 'XMLHttpRequest : ' + XMLHttpRequest + ', errorInfo : ' + errorInfo + ', exception : ' + exception);        }    });}</script><body><a onclick="touchAjax();" >ajax</a></body></html>

如果用JSP,可以在每个页面引入这些公用配置,修改起来比较方便

<script type="text/javascript" src="http://code.jquery.com/jquery-1.11.3.js"></script><script type="text/javascript">alert('$.ajaxSetup2()...');$.ajaxSetup({    cache : false});</script>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"    pageEncoding="ISO-8859-1"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><title>Ajax demo</title></head><%@include file="./base.jsp" %><script type="text/javascript">function touchAjax() {    $.ajax({        url : 'MyServlet',        success : function(data) {            alert('success request...');        },        error : function(XMLHttpRequest, errorInfo, exception) {            alert('error -> ' + 'XMLHttpRequest : ' + XMLHttpRequest + ', errorInfo : ' + errorInfo + ', exception : ' + exception);        }    });}</script><body><a onclick="touchAjax();" >ajax</a></body></html>

OK了。

0 0
原创粉丝点击