У нас есть сайт (на самом деле конструктор приложений), вынесшим много пользовательских элементов управления в различных сценариях,Исключить динамического Rendered пользовательского элемента управления с выхода Caching
Однажды менеджер решил добавить Output cache
на главной странице,
ОК, все в порядке, и запрос ответил очень быстро!
Но, с другой стороны этого кэширования есть некоторые проблемы:
Предположит, что мы имеем InsertForm User control
, заполнившие некоторые объекты, и ListForm User Control
, которые отображают список сущностей, поэтому вы можете догадаться, что произошло, объекты правильно заполнены, но не показано в списке, почему? из-за выхода кэширования.
Тогда мы должны исключить этот пользователь управляет от кэширования, после некоторого поиска мы находим Donut Caching, и, кажется, очень хорошо,
Мы используем Add dynamically server control to Substitution
Большинство пользователей управляет реализация зависит от всех жизненного цикла страницы, некоторые из них в Init, некоторые в нагрузки некоторые из них в рендера, поэтому в большинстве случаев мы имеем обойму место, что мы делаем:
И PreRender удалить все элементы управления из PlaceHolder для предотвращения дублирования:
в некоторых случаях мы имеем хороший результат, но в какой-то реализации мы снова неприятности , все Request
заменены на HttpContext.Current.Request
и все Session
s преобразованы в поля, но в некоторых случаях, например, использование Wizard
, мы все еще имеем exce ption: Request does not exist in this context
. И в событиях привязки у нас снова возникают проблемы, события не связаны правильно, как при следующем нажатии кнопки мастера.
В конце концов я заполняю мы в неправильном направлении, может быть, это не практично в этом сценарии,
что вы думаете?
есть ли у нас другой вариант?
или все эти проблемы разрешимы? любое предложение, пожалуйста?
Пожалуйста, не просто размещать ссылки, но фактический код/решение. – Charlie