目前,我正在开发一个有大约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到到期日期?
谢谢大家。
发布于 2017-10-04 21:32:11
您的服务器已达到极限-如果重新启动计算机或IIS,您将遇到相同的问题。
您最好的选择可能是将调用包装在您自己的缓存提供程序中,如this SO question。在那里,您可以存储OutputCache,也可以在db或nosql级别进行存储。
https://stackoverflow.com/questions/46104718
复制相似问题