Cache.Insert
との違いはわかりますCache.Add
が、 はどうCache["Key"] = "Value"
でしょうか。
質問する
3464 次
2 に答える
0
以下は、非常に単純なラッパーを作成する例です (コメントIs there any difference between Cache.Insert("Key", "Value") and Cache["Key"] = "Value"? ) に応答して、次の場合にデフォルトを設定します。インデックス メソッドを使用してアイテムをキャッシュに追加します。これは非常に基本的なことです。
public class CacheHandler
{
/// <summary>
/// static cache dependencies
/// </summary>
readonly static CacheDependency dependecies = null;
/// <summary>
/// sliding expiration
/// </summary>
readonly static TimeSpan slidingExpiration = TimeSpan.FromMinutes(5);
/// <summary>
/// absolute expiration
/// </summary>
readonly static DateTime absoluteExpiration = System.Web.Caching.Cache.NoAbsoluteExpiration;
/// <summary>
/// private singleton
/// </summary>
static CacheHandler handler;
/// <summary>
/// gets the current cache handler
/// </summary>
public static CacheHandler Current { get { return handler ?? (handler = new CacheHandler()); } }
/// <summary>
/// private constructor
/// </summary>
private CacheHandler() { }
/// <summary>
/// Gets \ Sets objects from the cache. Setting the object will use the default settings above
/// </summary>
/// <param name="key">the cache key</param>
/// <returns>the object stored in the cache</returns>
public object this[string key]
{
get
{
if (HttpContext.Current == null)
throw new Exception("The current HTTP context is unavailable. Unable to read cached objects.");
return HttpContext.Current.Cache[key];
}
set
{
if (HttpContext.Current == null)
throw new Exception("The current HTTP context is unavailable. Unable to set the cache object.");
HttpContext.Current.Cache.Insert(key, value, dependecies, absoluteExpiration , slidingExpiration);
}
}
/// <summary>
/// the current HTTP context
/// </summary>
public Cache Context
{
get
{
if (HttpContext.Current == null)
throw new Exception("The current HTTP context is unavailable. Unable to retrive the cache context.");
return HttpContext.Current.Cache;
}
}
}
繰り返しますが、これは非常に単純で基本的なものですが、キャッシュを挿入するために別のサービスを呼び出す必要があります。
protected void Page_Load(object sender, EventArgs e)
{
CacheHandler.Current["abc"] = "123";
}
アプリケーションを開始したばかりの場合は、ASP.Net ページの Cache プロパティを新しいキャッシュ ハンドラに置き換えることができます。
public partial class BasePage : Page
{
protected new CacheHandler Cache
{
get { return CacheHandler.Current; }
}
}
次に、すべてのページを次のように変更できます。
public partial class _Default : **BasePage**
{
}
そして、キャッシュハンドラーを呼び出すのは簡単です
protected void Page_Load(object sender, EventArgs e)
{
Cache["abc"] = "123";
}
これは、デフォルトの Cache オブジェクトの代わりにキャッシュ ハンドラーになります。
これらは単なるオプションであり、アプリケーション内でキャッシングをどのように処理したいか、またこれが本当に努力する価値があるかどうかは、あなた次第です。
乾杯。
于 2013-09-18T02:22:54.410 に答える