2016-12-05 12 views
0

У нас есть сайт Sitecore для веб-форм ASP.NET, где мы используем кэширование вывода HTML с помощью директивы OutputCache, атрибута VaryByCustom и добавленного метода GetVaryByCustomString() в Global.asax.Возможно ли получить текущий контролируемый элемент управления из Global.asax.GetVaryByCustomString()?

Возможно ли получить дескриптор текущего элемента управления из метода GetVaryByCustomString()? Мы сталкиваемся с проблемой кэширования вывода с использованием этого метода и нескольких экземпляров элемента управления, добавленного на ту же страницу. Если бы у меня был дескриптор элемента управления, я мог бы кэшировать вывод отдельно в зависимости от его параметров Sitecore (что важно в этом случае) и по-прежнему делает его хорошо совместимым с остальной частью нашей стратегии кэширования.

ответ

0

Невозможно получить текущий код с GetVaryByCustomString() в Global.asax. Однако, поскольку моя первоначальная цель заключалась в изменении кэшированного вывода для элемента управления Sitecore, который несколько раз появлялся на той же странице, я обнаружил, что этого можно добиться, указав все элементы управления на странице, а затем увеличив счетчик, связанный с контекстом запроса при создании каждого кеш-ключ и добавление его к ключу, поскольку элементы управления расположены в детерминированном и надежном порядке.

0

Я не уверен, почему вы использовали бы специальный код для этого кеширования. Если у вас есть Sublayout для вашего контроля, то для каждого экземпляра этого элемента управления/Sublayout на странице вы активируете кеширование, перейдя в раздел «Сведения о презентации/компоновке»> «Свойства управления» и прокрутите страницу вниз до раздела «Кэширование». Там вы проверите опции «Cacheable» и «Vary by Data».

+0

Во-первых, кэширование Sitecore, как известно, имеет проблемы с обратной передачей, которые, к сожалению, широко используются в этой кодовой базе. Он также не работает должным образом с некоторыми другими сценариями, не вникая в ненужные детали. Дело не в том, что мы не понимаем, как его использовать, но у него есть некоторые недостатки. Когда я смогу переделать весь сайт в MVC в следующем году, все будет построено по-другому. – Iucounu