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

本文探讨了jQuery中AJAX请求如何利用缓存及条件GET功能,通过设置ifModified和cache选项,实现数据的有效缓存和更新验证,提高应用性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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);
            }

 

转载于:https://www.cnblogs.com/niuzaihenmang/p/5642934.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值