Чтобы избежать попадания в базу данных для каждого запроса веб-страницы (обычно это дорогостоящая операция), можно использовать объектное кэширование (представленное в .NET 4.0).Это приведет к быстрому обслуживанию веб-страниц, потому что все будет обрабатываться непосредственно из памяти.Операции с базой данных будут выполняться только в том случае, если данные действительно изменились или если кэш был удален из памяти из-за ограничений ресурсов или настроек CacheItemPolicy.
Практическая стратегия, используемая в этом случае, будет следующей.
Шаг-1.В методе вашей модели, где данные для строки "id" изменяются / добавляются / удаляются, завершите эту операцию базы данных и затем:
Шаг-2.Извлекайте объект из кэша всякий раз, когда это возможно, обновляя из базы данных только при необходимости:
- Из вашего метода действия Controller вызовите метод Model, который возвращает объект, идентифицированный параметром "id";
- В вашем методе Model проверьте кеш для этого идентификатора.Если значение равно null, извлеките данные из базы данных и создайте объект, как обычно, а затем сохраните весь объект в кеше;
- Из метода Model верните содержимое кеша (т. Е.ваш конкретный объект для этого идентификатора) обратно в вызывающий метод действия Controller, а затем позвольте методу действия заполнить и обслуживать представление как обычно.
(класс MemoryCache являетсяконкретная реализация класса ObjectCache).
При таком подходе нет необходимости вообще использовать OutputCache для метода Controller, а все решения по кэшированию данных будут полностью инкапсулированы в модели.Мы бы получили более четкое разделение интересов;гораздо более высокая эффективность, лучшее время отклика и улучшенная масштабируемость;и уменьшенная зависимость от дорогостоящих операций с базой данных.