2009-07-07 2 views
1

Я написал HttpModule, который принимает запрос, обрабатывает его (через поиск базы данных) и выводит результаты (html) обратно на ответ. (Обратите внимание, что HttpModule фактически завершает запрос после его завершения, поэтому нет обычной обработки ASP.NET запроса.)Кэширование запросов с помощью HttpModule

Поскольку поиск базы данных может быть дорогостоящим/трудоемким, я хотел бы сохранить приводит к тому, что последующие (идентичные) запросы могут обслуживаться одним и тем же контентом без обращения к базе данных.

Где я могу хранить (в памяти) данные, чтобы он был доступен для последующих вызовов HttpModule?

+0

Не имеет отношения к вашему основному вопросу, но почему вы используете HttpModule вместо HttpHandler? Основываясь на вашем вопросе, кажется, что HttpHandler лучше подходит. – SolutionYogi

+0

Насколько я понимаю, HttpHandler обычно используется, когда вы хотите настроить собственное расширение файла (или обрабатывать определенное расширение), в то время как HttpModule перехватит все и все запросы, что лучше подходит для моих требований. – ObiWanKenobi

ответ

2

Вы можете сохранить его в Application.Cache, тогда результат будет доступен. Обязательно проверяйте «новые данные» каждый раз, а затем, если необходимо.

+0

Еще лучше = создать зависимость кеша. –

+0

Просто хотел отредактировать мой ответ. Побей меня. Поскольку ASP.NET 2.0 и SQL 2005 можно создать своего рода «push» dependendecy для данных. – Colin

0

Как размер ответа по сравнению с данными, полученными из db? Как насчет рендеринга, когда у вас есть эти данные в памяти? Если рендеринг не является проблемой, я просто буду кэшировать данные и отображать их по каждому запросу. Если рендеринг занимает много процессора, тогда вы должны кэшировать полный ответ и напрямую обслуживать его из кеша.