asp.net-mvc – ASP.NET MVC缓存如何为AJAX请求工作?
发布时间:2020-12-16 04:16:10 所属栏目:asp.Net 来源:网络整理
导读:我刚刚开始研究缓存以提高性能,并对缓存 AJAX调用提出疑问. 我有一个动作,用于查询twitter,然后返回结果.在用户按下按钮的时刻,它加载旋转的gif,同时进入动作以进行查询,然后返回局部视图.然后jQuery使用视图中的HTML响应更新div.通常这需要大约5秒.然后他们
我刚刚开始研究缓存以提高性能,并对缓存
AJAX调用提出疑问.
我有一个动作,用于查询twitter,然后返回结果.在用户按下按钮的时刻,它加载旋转的gif,同时进入动作以进行查询,然后返回局部视图.然后jQuery使用视图中的HTML响应更新div.通常这需要大约5秒.然后他们有一个更多的按钮,以获得更多的结果. 如果我将CachingAttribute放在此操作上会发生什么?我知道我可以尝试但我只是想解释事情的技术方面. 谢谢 这是我的Javascript: $('#blogEntryList #moreLink').live("click",function() { $('#morespan').toggle(); $('#loader').toggle(); $.get($(this).attr("href"),function(response) { $('#blogEntryList ol').append($("ol",response).html()); $('#blogEntryList #moreLink').replaceWith($("#moreLink",response)); $('#loader').hide(); $('#morespan').show(); }); return false; }); 这是我修改过的动作: [OutputCache( Location = OutputCacheLocation.Server,Duration = 100,VaryByParam = "")] public ActionResult BlogPosts(int? entryCount) { if (!entryCount.HasValue) entryCount = defaultEntryCount; int page = entryCount.Value / defaultEntryCount; IEnumerable<BlogData> pagedEntries = GetLatestEntries(page,defaultEntryCount); if (entryCount < totalItems) AddMoreUrlToViewData(entryCount.Value); return View("BlogEntries",pagedEntries); } 解决方法
以下是它的工作原理:假设在服务器端没有指定缓存,默认情况下,GET请求将由浏览器缓存,POST请求不缓存,除非您在发送允许覆盖客户端缓存的AJAX请求时指定cache:true属性战略.
现在在服务器端,您可以使用 让我们通过一个例子来说明这一点: [OutputCache( Location = OutputCacheLocation.Server,Duration = 10,VaryByParam = "")] public ActionResult Hello() { return Content(DateTime.Now.ToLongTimeString(),"text/plain"); } 在客户端: $.ajax({ url: '/home/hello',type: 'post',success: function (result) { alert(result); } }); 此控制器操作的结果将缓存在服务器上10秒钟.这意味着服务器将在每个请求中被命中,但如果存在缓存版本,则不会执行该操作,并且将直接从此缓存提供服务.在第一个请求达到控制器操作的10秒后,缓存将过期并重复相同的过程. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 在web.config中添加程序集引用
- asp.net – 如何创建google网站地图mvc网站?
- asp.net – dropdownlist在页面重新加载时不会重置
- asp.net – 在Response.Redirect()之后调用Response.End()
- asp.net-mvc – ASP.Net MVC 4.在单独的程序集中路由控制器
- asp.net – 图像文件正由另一个进程使用
- asp.net – 如何让用户登录2周?
- asp.net-mvc – BeginRenderLink Sitecore Glass Mapper
- azure – 当用户存储在外部身份提供程序服务中时与用户的关
- asp.net – 如何使用foreach循环清除所有文本框?
推荐文章
站长推荐
- asp.net-mvc – 如何调试此错误:’无法找到iise
- git/sourcetree解决本地仓库历史合并到线上仓的历
- asp.net – 我可以在Orchard CMS中使用我的Ninje
- asp.net – 处理可变数量的表单字段
- ASP.NET MVC3 TryValidateModel验证整个模型集合
- Parallel线程安全问题
- asp.net 上传或下载当文件名包含有特殊字符"#"的
- asp.net-mvc – 使用相同的密钥从Request.Files获
- asp.net-mvc-3 – ASP.NET MVC 3:如何在控制器方
- 当通过ASP.NET成员资格检查用户角色时,Semaphore
热点阅读