0

我目前正在对一个操作使用 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 缓存中。

4

1 回答 1

0

无法保证内容将在您指定的时间内缓存。当内存资源变低时,缓存会自动开始逐出内容。

于 2013-01-09T12:44:44.840 回答