我目前正在对一个操作使用 OutputCacheAttribute(在 System.Web.Mvc 中):
[ChildActionOnly]
[OutputCache(Duration = 24 * 60 * 60)] // Cache for 24 hours
public ContentResult Render(string json, string pagePublished)
{
在第一个页面加载后,它会缓存输出并保存它。它有时会缓存几个小时,有时是几分钟。
我在多个页面上使用此操作,所以首先我认为它可能与此有关。但我试图只缓存一页,看看它是否存在,它没有。我试图缓存很多页面,它有时会保留几个小时。
有人知道可能出了什么问题吗?
编辑:
w3wp 进程使用大量 RAM(这是设计使然,不是问题),仍有空闲 RAM(约 5gb)可供分配。我已经构建了另一个获取 httpcontext 缓存当前大小的操作。这相当于大约 1350000 字节。所以内存应该没有问题。
我也有一个 MemoryCache 的问题,它也会随机驱逐项目(大约 8530000 字节。)
编辑2:
似乎它将操作的输出保存在 MemoryCache 和 httpcontext 缓存中。