jQuery调用Ajax高效缓存.docx

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
jQuery调用Ajax高效缓存

jQuery调用Ajax高效缓存?【IT168?技术】尽管jQuery在浏览器ajax调用的时候对缓存提供了很好的支持,还是有必要了解一下如何高效地使用http协议。  首先要做的事情是在服务器端 支持HTTP GET,定义不同的URL输出不同的数据(MVC里对应的就是action)。如果要使用同一个地址获取不同的数据,那就不对了,一个HTTP POST也不行因为POST不能被缓存。许多开发人员使用POST主要有2个原因:明确了数据不能被缓存,或者是避免JSON攻击(JSON返回数组的时 候可以被入侵)。  缓存解释  jQuery全局对象里的ajax方法提供了一些options来支持缓存和Conditional GETs功能。 $.ajax({  ifModified: [true|false],  cache: [true|false],  });  ifModified选项定义的是在ajax调用的时候是否支持Conditional GETs功能。jQuery会自动帮我们处理服务器端 返回的名为Last-Modified的header值,然后在随后的请求里的header里发送If-Modified-Since。这需要我们的 MVC Controller要实现Conditional GETs功能才能用。Conditional GETs功能在http缓存上下文中用于重新验证缓存中过期的条目。如果jQuery认为一个条目已经过期了,它首先会请求服务器使用 Conditional GETs功能重新验证该条目,如果服务器返回状态码304(Not modified),jQuery会重新使用缓存里的该项目,这样的话,我们可以节约很多流量去下载页面内容。  cache选项基本上是 覆盖服务器端返回的http header里的所有关于缓存的设置,如果设置cache选项为false的话,jQuery会在请求的URL后面附件一个时间戳,以便区分之前的URL 地址,这样没错请求的内容都是最新的,也就是说浏览器每次接收的都是新地址,自然返回的都是最新数据。  让我们来看几个场景:  服务器端响应里设置No-Cache  服务器端为王,如果服务器端明确定义了response响应不能被缓存的话,jQuery也无能为力。ajax里的cache选项将被忽略。  JS代码:$(#nocache).click(function () {  $.ajax({  url: /Home/NoCache,  ifModified: false,  cache: true,  success: function (data, status, xhr) {  $(#content).html(data.count);  }  });  });?  C#代码:public ActionResult NoCache()  {  // 禁用缓存  Response.Cache.SetCacheability(HttpCacheability.NoCache);  return Json(new { count = Count++ }, JsonRequestBehavior.AllowGet);  }?  服务器端响应里设置过期时间  服务器端设置过期时间用于缓存数据,该条目在客户端将依据过期时间被缓存。  JS代码:$(#expires).click(function () {  $.ajax({  url: /Home/Expires,  ifModified: false,  cache: true,  success: function (data, status, xhr) {  $(#content).html(data.count);  }  });  });?  C#代码:public ActionResult Expires()  {  Response.Cache.SetExpires(DateTime.Now.AddSeconds(5));  return Json(new { count = Count++ }, JsonRequestBehavior.AllowGet);  }?  客户端从来不缓存数据  客户端决定每次都要最新的数据(不能使用缓存),也就是说ajax里的cache选项设置为false,不管服务器端如何定义,jQuery每次请求的URL地址都是唯一不同的,目的是每次都获取最新的内容。  JS代码:$(#expires_nocache).click(function () {  $.ajax({  url: /Home/Expires,  ifModified: false,  cache: false, // 这里是关键  succes

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档