ASP.NET异步隐藏
首先,我想我应该链接到
this article,这几乎完成了我的工作.
这是我的问题: 我的想法是我可以将缓存设置为两个小时,然后在缓存对象中有一个属性来说明加载对象的时间(让我们称之为LoadDate属性).然后我会让代码拉出缓存的对象. >如果它为null,我别无选择,只能同步提取数据,然后加载我的用户控件 >在更新时需要有一个锁定缓存对象的进程 在我之前链接的文章中,答案完美地设置了缓存更新,但我不相信它是异步的.问题始于使用Page.RegisterAsyncTask异步执行. [问题1]即使用户离开页面,我似乎无法找到有关这是否允许异步进程继续的任何信息? [问题2]任何人都知道如何做到这一点?我有一些代码,但它已经变得非常长,但似乎仍然无法正常工作. 解决方法
问题1(RegisterAsyncTask)
要记住非常重要的事情:从客户端/用户/浏览器的角度来看,这不会使请求异步.如果您注册的任务需要30秒才能完成,浏览器仍将等待30秒. RegisterAsyncTask唯一能做的就是在异步调用期间将工作线程释放回IIS.不要误会我的意思 – 这仍然是一项宝贵而重要的技术.但是,对于发出该特定请求的用户/浏览器,它对响应时间没有明显影响. 问题2 这可能不是解决您问题的最佳解决方案,但是我过去使用过的东西可能有所帮助:当您add your item to the cache时,指定absoluteExpiration和onRemoveCallback.创建一个获取新数据的函数,并将其放入缓存中:这是您应该作为onRemoveCallback传递的函数.这样,每次缓存数据到期时,都会发生回调以将新数据放回缓存中;因为回调是由于缓存过期事件而发生的,所以没有用户请求等待缓存新数据所花费的7-10秒. 这不是一个完美的设计.一些警告: >如何最初加载缓存?最简单的方法是从Application_Start函数调用缓存加载器函数. 对不起,我没有给你一个防弹的答案(我会留意这个帖子 – 也许是另一个SO’er呢!).但正如我所说,我已经使用这种方法取得了一些成功,除非你的系统负载非常高,否则应该有助于解决这个问题. 编辑:根据OP的评论略微扭曲上述方法 您可以缓存一个虚拟值,并纯粹用它来触发您的refreshCachedData函数.它不是特别优雅,但我之前也做过. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ASP.NET私有成员字段在回发时丢失了值
- .net – 测试项目中的App.config
- asp.net-mvc-5 – aspnet身份避免同时登录同一帐户
- asp.net-mvc – 使用asp.net mvc 2功能与火花浏览引擎
- asp.net-mvc – 为服务层设计DI(构造函数注入)的存储库
- asp.net-mvc – IIS6中的ASP.NET MVC压缩选项
- 【开源小软件 】Bing每日壁纸 V1.2.1
- asp.net-mvc – 如何在MVC3中存储用户首选项
- ASP.Net的最佳“加载”反馈?
- asp.net-mvc – 在ASP.NET MVC 3中使用WebGrid显示原始HTML