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