如何防止MVC5清除控制器输出缓存

时间:2017-09-07 20:36:32

标签: asp.net-mvc caching permanent

目前我正在处理一个包含约5000个不同页面的应用程序,这些页面均来自以下方法:

   [OutputCache(Duration = 604800)]
    public ActionResult Details(string alias){ //database connection and data retrieval - takes about 11 seconds }

这种方法第一次运行需要很长时间 - 显然,在考虑解决方案以加快速度的同时,我开始考虑使用长期服务器端输出缓存,因为这个数据库数据不会经常变化,并且当它不紧急时确实

正如我所提到的,这个Details方法总共有大约5000个不同的结果,所以缓存不会很大。

问题:加载网站并运行网站爬虫后,并非所有网页都被缓存。我假设它是因为缓存的缓冲区已经填满,MVC开始删除旧的缓存以便为新缓存腾出空间。

我的问题:我怎么能告诉ASP.net MVC不清除缓存 - 除非到期日期(一周)?或者强制将OutputCache保留到失效日期?

谢谢大家。

1 个答案:

答案 0 :(得分:0)

您已达到服务器的极限 - 如果重新启动计算机或IIS,则会遇到相同的问题。

您最好的选择可能是将您的通话包裹在自己的缓存提供商中,例如this SO question。从那里,您可以存储OutputCache并存储在db或nosql级别。