在ASP.NET 4之前,输出缓存机制仅能使用内存缓存,并且无法更改其行为。如果想要使用分布式缓存,例如AppFabric缓存或者自己的实现,无法做到。从ASP.NET 4开始,缓存现在遵循ASP.NET提供者模型,这意味着可以创建自己的提供者来使用缓存。如果想要使用自己的输出缓存,只需要继承OutputCacheProvider类,该类存在于System.Web.Caching命名空间中。在实现了包含Add、Get、Remove和Set方法的相关接口之后,可以在web.config文件中插入提供者以便使用它。
下面是一个简单的内存实现示例,展示了如何继承OutputCacheProvider类:
public class InMemoryOutputCacheProvider : OutputCacheProvider
{
#region Members
private Dictionary
在代码中,实现了一个基于项类的内存字典缓存。实现非常简单,并且基于一个看起来像这样的项类:
为了使用之前输出缓存的实现,需要将其插入到应用程序的web.config文件中。在system.web元素下,需要添加caching元素。在caching元素内部,添加一个outputCache元素并添加创建的提供者。以下示例展示了如何做到这一点:
<?xml version="1.0"?>
<configuration>
<appSettings/>
<connectionStrings/>
<system.web>
<compilation debug="true" targetFramework="4.0">
</compilation>
<caching>
<outputCache defaultProvider="InMemory">
<providers>
<add name="InMemory" type="InMemoryOutputCacheProvider" />
</providers>
</outputCache>
</caching>
<authentication mode="Windows" />
<pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID" />
</system.web>
</configuration>