Никогда не кэшируйте пользовательский элемент управления или что-либо, что наследуется от WebControl.
Причина в том, что он содержит ссылку на экземпляр страницы, на котором он создан. Кэшируя элемент управления, вы эффективно кэшируете страницу и все поддерево элемента управления вместе с ним. Вы правы, когда говорите, что там ждут проблемы!
Гораздо лучше кэшировать данные, которые нужны вашему пользовательскому контролю, создавать новый пользовательский контроль и инициализировать его с данными.
Некоторые другие предложения по оптимизации:
Если вы используете только один или два элемента управления на страницу, а не загружаете их динамически, просто объявите их как часть страницы и сначала установите для их видимости значение false, а затем - true, когда они вам нужны.
Если пользовательский контроль действительно слишком медленный для вас, вы можете попробовать переписать его как WebControl и настроить макет в коде. Я не уверен, что дополнительная работа будет стоить каких-либо оптимизаций, которые могут быть получены там.
Я бы не стал предварительно оптимизировать что-либо, пока вы не узнаете, что это проблема. Вы действительно сталкиваетесь с проблемами производительности с LoadControl()
?