Нет.Но поскольку кэширование вывода в ASP.NET 4.0 (с использованием модели провайдера) является подключаемым, вы можете написать собственное.
Чтобы создать нового поставщика кэша вывода, вам нужно унаследовать от System.Web.Caching.OutputCacheProvider
, вам нужно сослаться на System.Web
и System.Configuration
.
Тогда это в значительной степени случайпереопределить четыре метода от базового провайдера, Add, Get, Remove и Set.
Поскольку ваш сайт, вероятно, получит довольно много хитов, вы определенно захотите использовать Singleton для DataCacheFactory,этот код использует шаблон синглтона Джона Скита (при условии, что я правильно его понял).
using System;
using System.Web.Caching;
using Microsoft.ApplicationServer.Caching;
namespace AppFabricOutputCache
{
public sealed class AppFabricOutputCacheProvider : OutputCacheProvider
{
private static readonly AppFabricOutputCacheProvider instance = new AppFabricOutputCacheProvider();
private DataCacheFactory factory;
private DataCache cache;
static AppFabricOutputCacheProvider()
{ }
private AppFabricOutputCacheProvider()
{
// Constructor - new up the factory and get a reference to the cache based
// on a setting in web.config
factory = new DataCacheFactory();
cache = factory.GetCache(System.Web.Configuration.WebConfigurationManager.AppSettings["OutputCacheName"]);
}
public static AppFabricOutputCacheProvider Instance
{
get { return instance; }
}
public override object Add(string key, object entry, DateTime utcExpiry)
{
// Add an object into the cache.
// Slight disparity here in that we're passed an absolute expiry but AppFabric wants
// a TimeSpan. Subtract Now from the expiry we get passed to create the TimeSpan
cache.Add(key, entry, utcExpiry - DateTime.UtcNow);
}
public override object Get(string key)
{
return cache.Get(key);
}
public override void Remove(string key)
{
cache.Remove(key);
}
public override void Set(string key, object entry, DateTime utcExpiry)
{
// Set here means 'add it if it doesn't exist, update it if it does'
// We can do this by using the AppFabric Put method
cache.Put(key, entry, utcExpiry - DateTime.UtcNow);
}
}
}
После того, как вы написали это, вам необходимо настроить приложение для его использования вваш web.config:
<system.web>
<caching>
<outputCache defaultProvider="AppFabricOutputCache">
<providers>
<add name="AppFabricOutputCache" type="AppFabricOutputCache, AppFabricOutputCacheProvider" />
</providers>
</outputCache>
</caching>
</system.web>
MSDN: OutputCacheProvider
Блог Скотта о создании OutputCacheProviders