jquery在浏览器ajax调用的时候,对缓存提供了很好的支持,POST方式不能被缓存,
使用POST的原因,明确了数据不能被缓存,或者避免JSON攻击(JSON返回数据的时候可以被入侵)

jquery全局对象里的ajax提供了一些方式来支持缓存和ConditionalGETs功能

  $.ajax({
ifModified:true,
cache:true,
});

ifModified选项定义的是在ajax调用的时候是否支持Conditional GETs功能,jquery会自动处理服务端返回的名为Last-Modified的header值,
它首先会请求服务器使用ConditionalGETs功能重新验证该条目,如果服务器返回状态码304,jquery会重新使用缓存里的该条目,
cache选项:如果为false,jquery会在请求的url后面附加一个时间戳,以区分之前的url地址,这样每次请求是新的,请求的数据肯定也是新的

但是如果服务器明确定义了Response响应不能被缓存的话,jquery也没用,ajax里面的cache选项被忽略,服务器里的禁用缓存如下:

  // 禁用缓存
Response.Cache.SetCacheability(HttpCacheability.NoCache);

服务器和客户端使用Conditional Gets功能验证缓存数据
客户端将条目放在缓存里,在过期之后重新验证,服务器端必须实现Conditional Gets功能(使用ETags或者last modified的header

js代码

  $.ajax({
ifModified:true,//这是关键
cache: true,
success: function (data,status,xhr) { }
});

服务器代码:

  if (Request.Headers["If-Modified-Since"] != null  )
{
return new HttpStatusCodeResult((int)HttpStatusCode.NotModified);
}

MVC中使用jquery的浏览器缓存问题的更多相关文章

  1. [转]如何在.NET MVC中使用jQuery并返回JSON数据

    本文转自:http://blog.sina.com.cn/s/blog_48e42dc90100xp1p.html 二.开始实践 - jQuery端 假设我们要从服务器端获取一个文章列表,并把文章条目 ...

  2. asp.net mvc中使用jquery H5省市县三级地区选择控件

    地区选择是项目开发中常用的操作,本文讲的控件是在手机端使用的选择控件,不仅可以用于实现地区选择,只要是3个级别的选择都可以实现,比如专业选择.行业选择.职位选择等.效果如下图所示: 附:本实例asp. ...

  3. ASP.NET MVC中使用jQuery时的浏览器缓存问题

    介绍 尽管jQuery在浏览器ajax调用的时候对缓存提供了很好的支持,还是有必要了解一下如何高效地使用http协议. 首先要做的事情是在服务器端支持HTTP GET,定义不同的URL输出不同的数据( ...

  4. 如何在.NET MVC中使用jQuery并返回JSON数据

    http://blog.csdn.net/dingxingmei/article/details/9092249 开始实践 - jQuery端 假设我们要从服务器端获取一个文章列表,并把文章条目显示在 ...

  5. MVC中使用JQuery方式进行异步请求和使用自带方式进行异步请求

    在MCV中使用异步请求可以很很高效地进行前台和后台的数据传递,在这里,笔者为初学者介绍两种在MVC中常用的异步请求处理方式. 在这里,我们通过在一个页面中放置一个按钮来异步获取当前服务器端的系统时间为 ...

  6. MVC 中引入Jquery文件的几种方法

    方法1: <script src="@Url.Content("~/Scripts/jquery-1.9.1.js")" type="text/ ...

  7. 在ASP.NET MVC中使用jQuery的Load方法加载静态页面的一个注意点

    使用使用jQuery的Load方法可以加载静态页面,本篇就在ASP.NET MVC下实现. Model先行: public class Article { public int Id { get; s ...

  8. MVC中使用jquery uploadify上传图片报302错误

    使用jquery uploadify上传图片报302错误研究了半天,发现我上传的action中有根据session判断用户是否登录,如果没有登录就跳到登陆页,所以就出现了302跳转错误.原来更新了fl ...

  9. 记录:asp.net mvc 中 使用 jquery 实现html5 实现placeholder 密码框 提示兼容password IE6

    @{ViewBag.Title = "完美结合";} <script>var G_start_time = new Date;</script> <! ...

随机推荐

  1. 谈谈分布式事务之三: System.Transactions事务详解[上篇]

    在.NET 1.x中,我们基本是通过ADO.NET实现对不同数据库访问的事务..NET 2.0为了带来了全新的事务编程模式,由于所有事务组件或者类型均定义在System.Transactions程序集 ...

  2. date命令--修改linux系统时间

    在linux环境中,不管是编程还是其他维护,时间是必不可少的,也经常会用到时间的运算,熟练运用date命令来表示自己想要表示的时间,肯定可以给自己的工作带来诸多方便. 1.命令格式: date [参数 ...

  3. 为EF DbContext生成的实体添加注释(T5模板应用)[转]

    1 先加上类注释 找到这行代码WriteHeader(codeStringGenerator, fileManager): 在它下面加上我们的代码: string summary=string.Emp ...

  4. 【HTML】Beginner9:Form

    1.Form     Collect data inputted by a user.     Used as an interface for a web application,or send d ...

  5. LCD platform_device(s5pv210)

    devs.c:   static struct resource s3cfb_resource[] = { [0] = { .start= S5P_PA_LCD, .end= S5P_PA_LCD + ...

  6. Esper系列(七)数据缓存、外部事件应用(静态方法)

    LRU Cache 功能:最近最少使用策略. 数据库查询缓存应用配置: 1  ); 12          } 13          return bean; 14      }    15  } ...

  7. about云资源汇总V1,3

    mongodb文档与视频资料分享 1.mongodb1-72.mongodb8-17集含代码3.MongoDB_and_Python学习笔记4.深入学习MongoDb5.PHP&MongoDB ...

  8. poj1149--PIGS(最大流)

    题意: 有m个猪圈 每个猪圈有不同数量的猪 [0, 1000]有n个顾客 每个顾客需要Bi头猪 有Ai个钥匙 能打开Ai个不同的猪圈顾客按顺序来买猪 只能买他有钥匙的猪 买完之后 这几个猪圈的猪可以相 ...

  9. javascript function对象

    <html> <body> <script type="text/javascript"> Function.prototype.get_my_ ...

  10. oracle flashback

    一.Flashback闪回技术概述:当Oracle数据库发生逻辑错误时,必须使用flashback技术,实现快速和方便的恢复数据.对于人为错误,要确定受到错误事务影响的对象或者记录是非常困难的.使用f ...