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 – 如何在WCF中使用SOAP :: Lite?
- C#、Python中分别是怎么实现通过字符串获取实体类的值以及给
- asp.net – SQL查询无法按预期工作
- asp.net – 显示为普通html的.cshtml文件
- ASP.Net MVC – 从HttpPostedFileBase读取文件,而不保存
- 如何阻止IIS 8停止空闲的ASP.NET应用程序?
- asp.net-mvc-4 – mvc 4捆绑和缩小 – 当我刷新时没有获得3
- asp.net-mvc – 如何在ASP.NET MVC的下拉列表中发出未编码的
- .NET 4.5通用成员资格提供程序表名称
- asp.net-mvc – 使用MvcContrib TestHelper断言不应映射入站
- asp.net – 在TableRowCollection上使用linq
- asp.net – 如何使用WebApi将POSTHttpRoute POST
- asp.net – 在TextChanged上停止回发
- asp.net-mvc – 在我的asp.net MVC解决方案中保持
- .net – 为什么OWIN的SignInAsync()没有设置IsAu
- ASP.NET Web应用程序的其他声音
- asp.net-mvc – @ Html.HiddenFor返回null值
- asp.net-mvc – MVC EditorFor里面的另一个Edito
- asp.net-mvc – 如何在ActionFilterAttribute AS
- asp.net-mvc-3 – 如何修复此MVC网站错误:无法加