Контроль использования памяти кэша вывода ASP.NET - PullRequest
1 голос
/ 18 мая 2010

Я бы хотел использовать кэширование вывода с WCF Data Services, и хотя нет ничего специально встроенного для поддержки кэширования, существует метод OnStartProcessingRequest, который позволяет мне подключать и устанавливать кешируемость запроса с использованием обычных механизмов ASP.NET.

Но меня беспокоит перезапуск рабочего процесса из-за чрезмерного потребления памяти при кэшировании больших ответов. Есть ли способ указать верхний предел для кэша вывода ASP.NET, чтобы в случае его превышения элементы в кэше были отброшены?

Я видел настройки конфигурации кэширование , но из документации у меня сложилось впечатление, что это для явного кэширования через объект Cache, поскольку существует отдельный outputCacheSettings , который не имеет атрибуты, связанные с памятью.

Вот фрагмент кода из поста Скотта Хансельмана , который показывает, как я устанавливаю кешируемость запроса.

protected override void OnStartProcessingRequest(ProcessRequestArgs args)
{
    base.OnStartProcessingRequest(args);
    //Cache for a minute based on querystring
    HttpContext context = HttpContext.Current;
    HttpCachePolicy c = HttpContext.Current.Response.Cache;
    c.SetCacheability(HttpCacheability.ServerAndPrivate);
    c.SetExpires(HttpContext.Current.Timestamp.AddSeconds(60));
    c.VaryByHeaders["Accept"] = true;
    c.VaryByHeaders["Accept-Charset"] = true;
    c.VaryByHeaders["Accept-Encoding"] = true;
    c.VaryByParams["*"] = true;
}

1 Ответ

1 голос
/ 18 мая 2010

Ааа! Теперь я чувствую себя глупо ... Кажется, я могу установить этот предел в конфигурации IIS , что имеет смысл, так как я предполагаю, что IIS в первую очередь предоставляет службы кэширования вывода для ASP.NET.

И в качестве дополнительного бонуса кажется, что IIS уже по умолчанию установил некоторые разумные настройки для этого:

Максимальный размер кэшированного ответа (в байтах) Указывает максимальный размер кэшированный ответ для обоих кеши пользовательского режима и режима ядра. значение по умолчанию составляет 262144 байта. это поле включено на уровне сервера только; это только для чтения на всех других уровни.

Ограничение размера кэша (в МБ) Настройка ограничения размера обоих кеши пользовательского режима и режима ядра. Вы Можно ввести размер (в МБ) или ввести 0. Если Вы вводите 0, IIS использует половину доступная физическая память или виртуальная память, в зависимости от того, что меньше. Это поле включен только на уровне сервера; это доступно только для чтения на всех других уровнях.

...