====== Кэширование ====== В ASP.NET используются два основных типа кэширования: * Кэширование данных * Кэширование вывода Рассмотрим возможности их применения в проекте QP7. ===== Кэширование вывода ===== Реализуется с помощью [[http://msdn.microsoft.com/en-us/library/hdxfb6cy(VS.71).aspx|директивы OutputCache]] на вкладке //Presentation// поля **Format** на [[:formats#свойства_формата|странице свойств формата]]. В этом случае используется кэширование вывода на уровне пользовательских контролов. Необходимо учесть, что данный вариант подходит не всегда и не для всех объектов, так как в случае получения информации из кэша //Code Behind// выполняться не будет, что может быть неприемлемо. Обычный синтаксис: <%@ OutputCache Duration="100" VaryByParam="location;count" %> Замечания: * Для объектов шаблона желательно использовать параметр **Shared**, что позволяет уменьшить нагрузку на память сервера. * Крайне не рекомендуется использование VaryByParam="*" из-за вероятных проблем с производительностью ===== Кэширование данных ===== Реализуется по-разному в зависимости от того, как осуществляется доступ к данным. ==== Publishing Container ==== В свойствах контейнера есть [[development:container#кэширование|настройки кэширования]]. В качестве ключа кэширования используется полная совокупность параметров хранимой процедуры (qp_GetContentPage), использующейся для получения данных. ==== QP7 Cache API ==== Доступно в виде экземплярных методов в классе [[api:dbconnector|DBConnector]]. Используется для кэширования результатов SQL-запросов, коллекций LINQ-to-SQL объектов и произвольных объектов. Более подробное описание [[api:dbconnector#методы_кэширования|здесь]].