Я встречал намеки на кэширование вывода для серверного элемента управления, но еще не нашел окончательного ответа на вопрос: можно ли кэшировать вывод серверного элемента управления (точно так же, как кэшируются пользовательские элементы управления)?
Предложения, с которыми я столкнулся, включают кеширование данных (а не истинное кеширование вывода) или предлагают установить параметры response.cache. В идеале я хотел бы иметь возможность перетащить серверный элемент управления на страницу и установить свойства с теми же именами, что и директива outputcache:
Пример:
<cc1:MyCustomControl ID="ctl1" runat="server" CacheDuration="200" VaryByCustom="user" />
Я собирался покопаться в структуре, чтобы увидеть, как на самом деле работает кэширование вывода, но надеялся найти некоторую информацию для начала. Из моего ограниченного понимания, синтаксический анализатор решает, кэшируется ли страница / пользовательский элемент управления. Поскольку серверные элементы управления не анализируются, невозможно остановить выполнение кода. Я полагаю, я мог бы инициализировать логическое значение «IsInCache» и убедиться, что все методы проверяют эту переменную перед выполнением кода. Это не полностью исключит выполнение серверного элемента управления, но может достаточно повысить производительность, избегая обращений к базе данных и привязки данных к элементам управления.
Я все еще использую .NET 3.5, и у меня не было много времени для изучения модели поставщика OutputCache в .NET 4.0. Может в последней версии фреймворка есть решение?
Есть предположения?