前几天看IBuySpy时记在OneNote里面的笔记

IBuySpy Portal 中使用 PortalModuleControl 这个继承自UserControl的类来作为站点中所有Module的基类,用户控件的工作方式是,当页面上实例化一个用户控件时,自动将它的所有子控件全部Render成HTML,然后输出,为了提高Module的工作效率,每个Module可以设置自己的缓存时间,在缓存时间内,系统不会再重复Render它的所有子控件,而是在第一次Render的时候,把结果HTML文本缓存起来,当下次需要的时候再直接输出。   实现缓存功能,IBuySpy是通过CachedPortalModuleControl实现的。   因为IBuySpy页面上的Module都是通过LoadControl()方法来动态载入到页面上的,像这样:   PortalModuleControl portalModule = (PortalModuleControl) Page.LoadControl(_moduleSettings.DesktopSrc);   portalModule.PortalId = portalSettings.PortalId;portalModule.ModuleConfiguration = _moduleSettings;   parent.Controls.Add(portalModule);   当检测到一个Module的CacheTime>0时,代码则:   CachedPortalModuleControl portalModule = new CachedPortalModuleControl();   portalModule.PortalId = portalSettings.PortalId;portalModule.ModuleConfiguration = _moduleSettings;   parent.Controls.Add(portalModule);   就是说,代码不会再载入PortalModuleControl类型的控件了,而是载入CachedPortalModuleControl来实现的。   下面看看CachedPortalModuleControl是如何实现缓存的:   private String _cachedOutput = “”;   这里定义了一个String变量,保存缓存的内容   protected override void [...]
原文地址:https://www.cnblogs.com/kaneboy/p/2333682.html