Вывод кеширования страницы за исключением пользовательского элемента управления в ней - PullRequest
0 голосов
/ 04 марта 2011

У меня есть страница, которая содержит пользовательский элемент управления. Структура страницы показана ниже:

enter image description here

Если вы не можете видеть изображение выше, отметьте его на http://i54.tinypic.com/2r4id5f.jpg Теперь, кроме содержимого UserControl, я бы хотел кэшировать всю страницу. Я попытался использовать атрибут OutputCache на странице .aspx, однако он также кэширует содержимое UserControl.

Пожалуйста, дайте мне знать, как я смогу кэшировать содержимое страницы, кроме пользовательского элемента управления.

Заранее спасибо.

Ответы [ 4 ]

0 голосов
/ 04 марта 2011

Вы пытались добавить @OutputCache как для usercontrol, так и для страницы, но usercontrol установил varByParam = "qsvalue; postvalue", где qsvalue - это сгенерированная строка запроса, которую вы делаете случайным для каждого вызова страницы, а postvalue одинакова для обратной передачи.

Пользовательский элемент управления будет по-прежнему кэшироваться, но теоретически он никогда не должен получить хаш, поскольку значение qsvalue / postvalue всегда отличается от кэшированного. Он может плохо масштабироваться - лучше всего установить длительность на минимум, чтобы предотвратить их накопление в кеше.

0 голосов
/ 04 марта 2011

Я думаю, что вы можете использовать элемент управления asp.net Substitution для достижения этой цели. Вот ссылка на ScottGu, идущий через пример .

Основная идея заключается в том, что вы кэшируете всю страницу как обычно, но помечаете части для замены, которые можно заменить для каждого запроса.

0 голосов
/ 04 марта 2011

Я думаю, что вы ищете VaryByControl .Также прочитайте этот пост о кешировании фрагментов

0 голосов
/ 04 марта 2011

Посмотрите на использование замен.

Это должно помочь

Однако, загвоздка в том, что подстановка выполняется вне жизненного цикла страницы, вы не можете отобразить пользовательский элемент управления для вашей подстановки. Вы должны написать метод, который возвращает строку для замены. Но это может сработать для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...