ASP.NET(MVC)Outputcache和并发请求
|
让我们说,理论上,我在我的网站上有一个页面/控制器动作,它做了一些非常重的事情.完成它的操作大约需要10秒钟. 现在,我使用.NET的outputcache机制将其缓存15分钟(例如,我使用[OutputCache(Duration = 900)])如果15分钟后缓存过期并且100个用户再次请求页面,会发生什么?重型加工需要10秒钟? >繁重的东西只是第一次完成,并且有一些锁定机制,以便其他99个用户将获得缓存结果 很容易问题,但我不是百分百肯定.我希望它是第一,但是:-) 谢谢! 解决方法那么,这取决于你如何配置IIS.如果你的工作线程少于100个(假设是50个),那么“重物”会完成50次,使服务器瘫痪,然后剩下的50个请求将从缓存中提供.但不,缓存的操作结果没有“锁定机制”;在大多数情况下,这会适得其反. 编辑:我相信这是真的,但尼克的测试说不然,我现在没有时间进行测试.亲自尝试一下!然而,答案的其余部分并不依赖于上述情况,我认为这更重要. 但是,一般来说,任何Web缓存或其他方式的请求都不需要10秒才能返回.如果我在你的鞋子里,我会以某种方式预先计算请求的难点部分.如果要缓存HTML,您仍然可以缓存操作结果,但听起来您的问题比这更大. 你可能也想要consider asynchronous controllers.最后,请注意虽然IIS和ASP.NET MVC不会锁定这个繁重的计算,但你可以.如果您使用异步控制器并结合锁定计算,那么您将有效地获得您要求的行为.如果不了解更多关于你做什么的话,我真的不能说这是最好的解决方案. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ASP.NET安全最佳实践
- asp.net-core – 实体框架核心 – 相当于IN子句
- asp.net-mvc – 如何全局化ASP.NET MVC视图(特别是小数分隔
- asp.net – 我想列出我的下拉列表中的所有国家/地区,我在哪
- asp.net – GridView的RowDataBound函数
- asp.net-mvc – 使用UIHint的ASP.NET MVC 3自定义显示模板
- ASP.NET网站管理系统退出 清除浏览器缓存,Session的代码
- asp.net-mvc-3 – 不明显的客户端验证规则中的验证类型名称
- asp.net-mvc – MVC表单LoginUrl不正确
- asp.net – “填充无效,不能删除”异常WebResource.axd
- asp.net-mvc – 持久化jqGrid列首选项
- asp.net – 网页中的电子签名[已关闭]
- asp.net – 从IEnumerable获取不同的项目
- asp.net-mvc-3 – 超时在ASP.Net MVC FormsAuthe
- asp.net-mvc – 如何获取Azure网站上的错误详细信
- asp.net-mvc – 如何使用MVC 4制作提交按钮
- asp.net-mvc – 如何在Html.RenderAction(MVC3)中
- asp.net – 我可以在Visual Studio 2008中使用MV
- 如何在服务器端缓存ASP.NET自定义HttpHandler响应
- asp.net – 什么是嵌入网站的好搜索引擎
