0

目前,我正在开发一个包含约 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 直到到期日期?

感谢大家。

4

1 回答 1

0

您处于服务器的极限 - 如果您重新启动机器或 IIS,您将遇到同样的问题。

您最好的选择可能是将您的调用包装在您自己的缓存提供程序中,就像这个 SO question一样。从那里,您可以存储 OutputCache,也可以存储在 db 或 nosql 级别。

于 2017-10-04T13:32:11.257 回答