码迷,mamicode.com
首页 > Web开发 > 详细

MVC中使用jquery的浏览器缓存问题

时间:2016-07-05 11:58:53      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:

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的浏览器缓存问题

标签:

原文地址:http://www.cnblogs.com/niuzaihenmang/p/5642934.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!