将usercontrol输出到内存以外的其他内容

时间:2012-01-22 01:50:40

标签: asp.net outputcache

我已经实现了一个基于磁盘的缓存,并且还想启用它来输出缓存用户控件。我已经读过,我不能将基于磁盘的outputcache提供程序用于usercontrols,而只能输出整个页面的输出缓存。

是否可以以其他方式将用户控件输出到磁盘或其他某种存储类型(db)?

感谢 托马斯

1 个答案:

答案 0 :(得分:0)

ASP.Net 4.0增加了输出缓存可扩展性。您可以通过创建输出缓存提供程序来完成此操用Scott Gu的话来说,

  

输出缓存提供程序可以使用任何存储机制来持久保存输出缓存内容。这使得可以使用任何持久性机制轻松创建存储缓存内容的输出缓存提供程序 - 包括本地或远程磁盘,数据库,云存储和分布式缓存引擎(如memcached或velocity)。

通过子类化创建输出缓存提供程序 OutputCacheProvider基类。

创建缓存提供程序后,可以在web.config文件中注册:

<caching>
  <outputCache defaultProvider="MyCustomCacheProvider">
    <providers>
      <add name="MyCustomCacheProvider" type="CustomCacheProvider" />
      </providers>
    </outputCache>
</caching>

将OutputCache指令放在用户控件的ascx页面上时:

<%@ OutputCache Duration="120" VaryByParam="None" %>

您应该可以使用此自定义缓存提供程序进行用户控制。

有关详细信息,请参阅Scott Gu's excellent blog post