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. [BILL WEI] SQL 巧用临时表

    在写sql 的时候,我们有时候,只需要拿出某些特定的数据,去跟一些表进行关联,但是如果直接通过表关联的话,可能拿到 的数据有冗余,这个时候,我们就可以巧用临时表,讲自己需要的特定数据筛选出来,然后组成 ...

  2. 【原】Spark Standalone模式

    Spark Standalone模式 安装Spark Standalone集群 手动启动集群 集群创建脚本 提交应用到集群 创建Spark应用 资源调度及分配 监控与日志 与Hadoop共存 配置网络 ...

  3. ArrayLLis 线程不安 实验

    这段代码演示了ArrayList的线程不安全,我让3个线程分别对list加入300个字符串,最后的arr的大小为800多,大家可以测试一下,我的一次是898,一次是897,同时还学了join的用法 i ...

  4. java 小结1(static ,final,泛型)

    static,final. (1)final: final:属于“终态”,意思就是不可以改变.可以修饰非抽象类,非抽象类的方法等.反正就是不能够再改变赋值了. 注意:1)fina类不能被继承,所以它没 ...

  5. POJ-2442 Sequence K路归并问题

    题目链接:http://poj.org/problem?id=2442 问题一:K个有序表合成一个有序表,元素共有n个.用堆优化 问题二:两个序列的前n小的元素.堆优化. 这题就是问题二的扩展,每次处 ...

  6. jqGrid 设置列宽

    在jqgrid显示出来之后,需要手动调整列宽. 1. 经过调查jqgrid本身不支持指定列宽,当然这个是说的的初始化完成后. 2. 经过调查手动是可以调整列宽,所以进行了事件的查看resizestop ...

  7. Find longest contiguous sub array

    It's still an Amazon interview question. Given an array containing only stars '*' and hashes '#' . F ...

  8. ffmpeg关于aac解码

    ffmpeg从0.11.3版本开始,默认解码aac为AV_SAMPLE_FMT_FLT (float) 0.11.2以前版本解码aac为AV_SAMPLE_FMT_S16 (16位short型)

  9. fzu2109--Mountain Number(数位dp)

     Problem Description One integer number x is called "Mountain Number" if: (1) x>0 and x ...

  10. sql语句相关整理

    select * from jcls_lawfirms where length(lf_2)=2 for updateselect * from jcls_lawfirms where length( ...