目前我正在处理一个包含约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保留到失效日期?
谢谢大家。
答案 0 :(得分:0)
您已达到服务器的极限 - 如果重新启动计算机或IIS,则会遇到相同的问题。
您最好的选择可能是将您的通话包裹在自己的缓存提供商中,例如this SO question。从那里,您可以存储OutputCache并存储在db或nosql级别。