aspnetmvc中使用jquery时的浏览器缓存问题详解

aspnetmvc中使用jquery时的浏览器缓存问题详解

ID:27544565

大小:51.00 KB

页数:7页

时间:2018-12-03

aspnetmvc中使用jquery时的浏览器缓存问题详解_第1页
aspnetmvc中使用jquery时的浏览器缓存问题详解_第2页
aspnetmvc中使用jquery时的浏览器缓存问题详解_第3页
aspnetmvc中使用jquery时的浏览器缓存问题详解_第4页
aspnetmvc中使用jquery时的浏览器缓存问题详解_第5页
资源描述:

《aspnetmvc中使用jquery时的浏览器缓存问题详解》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、ASP.NETMVC中使用jQuery时的浏览器缓存问题详解这篇文章主要介绍了ASP.NETMVC中使用jQuery时的浏览器缓存问题详解,需要的朋友可以参考下。介绍尽管jQuery在浏览器ajax调用的时候对缓存提供了很好的支持,还是有必要了解一下如何高效地使用http协议。首先要做的事情是在服务器端支持HTTPGET,定义不同的URL输出不同的数据(MVC里对应的就是action)。如果要使用同一个地址获取不同的数据,那就不对了,一个HTTPPOST也不行因为POST不能被缓存。许多开发人员使用POST主要有2个原因:明确了数据不能被缓存,或者是避免JSON攻击(JSON返回数组的

2、时候可以被入侵)。缓存解释jQuery全局对象里的ajax方法提供了一些options来支持缓存和ConditionalGETs功能。$.ajax({nbsp;ifModified:[true

3、false],nbsp;cache:[true

4、false],});ifModified选项定义的是在ajax调用的时候是否支持ConditionalGETs功能。jQuery会自动帮我们处理服务器端返回的名为Last-Modified的header值,然后在随后的请求里的header里发送If_Modified-Since。这需要我们的MVCController要实现ConditionalGE

5、Ts功能才能用。ConditionalGETs功能在http缓存上下文中用于重新验证缓存中过期的条目。如果jQuery认为一个条目已经过期了,它首先会请求服务器使用ConditionalGETs功能重新验证该条目,如果服务器返回状态码304(Notmodified),jQuery会重新使用缓存里的该项目,这样的话,我们可以节约很多流量去下载页面内容。cache选项基本上是覆盖服务器端返回的httpheader里的所有关于缓存的设置,如果设置cache选项为false的话,jQuery会在请求的URL后面附件一个时间戳,以便区分之前的URL地址,这样没错请求的内容都是最新的,也就是说浏览

6、器每次接收的都是新地址,自然返回的都是最新数据。让我们来看几个场景:服务器端响应里设置No-Cache服务器端为王,如果服务器端明确定义了response响应不能被缓存的话,jQuery也无能为力。ajax里的cache选项将被忽略。JS代码:$(’#nocache,).click(function(){nbsp;$.ajax({nbsp;nbsp;url:’/Home/NoCache’,nbsp;nbsp;ifModified:false,nbsp:nbsp;cache:true,nbsp;nbsp;success:function(data,status,xhr){nbsp;nbs

7、p;nbsp;$(’ttcontent’).html(data,count);nbsp;nbsp;}nbsp;}):});邙代码:publicActionResultNoCache(){nbsp;//禁用缓存nbsp;Response.Cache.SetCacheability(HttpCacheability.NoCache):nbsp;returnjson(new{count=Count++},JsonRequestBehavior.AllowGet);服务器端响应里设置过期时间服务器端设置过期时间用于缓存数据,该条目在客户端将依据过期时间被缓存。JS代码:$(’#expires’

8、).click(function(){nbsp;$.ajax({nbsp:nbsp;url:’/Home/Expires’,nbsp;nbsp;ifModified:false,nbsp;nbsp;cache:true,nbsp;nbsp;success:function(data,status,xhr){nbsp;nbsp;nbsp;$C#content,).html(data,count):nbsp:nbsp;}nbsp;});});c#代码:publicActionResultExpires(){nbsp;Response.Cache.SetExpires(DateTime.No

9、w.AddSeconds(5));nbsp;returnjson(new{count=Count++},JsonRequestBehavior.AllowGet);客户端从来不缓存数据客户端决定每次都要最新的数据(不能使用缓存),也就是说ajaxi里的cache选项设置为false,不管服务器端如何定义,jQuery每次请求的URL地址都是唯一不同的,目的是每次都获取最新的内容。JS代码:$(’ttexpires_nocache’)•click

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。