我需要從某些參考數據中填充一些下拉框。即城市名單,國家列表等。我需要填寫各種網絡表格。我認爲,我們應該將這些數據緩存在我們的應用程序中,這樣我們就不會在每個表單上都打上數據庫。我對緩存和ASP.Net很陌生。請告訴我如何做到這一點。ASP.Net中的數據緩存
7
A
回答
13
我總是將以下類添加到我的所有項目中,使我可以輕鬆訪問Cache對象。實現這一點,繼哈桑汗的答案將是一個很好的方法。
public static class CacheHelper
{
/// <summary>
/// Insert value into the cache using
/// appropriate name/value pairs
/// </summary>
/// <typeparam name="T">Type of cached item</typeparam>
/// <param name="o">Item to be cached</param>
/// <param name="key">Name of item</param>
public static void Add<T>(T o, string key, double Timeout)
{
HttpContext.Current.Cache.Insert(
key,
o,
null,
DateTime.Now.AddMinutes(Timeout),
System.Web.Caching.Cache.NoSlidingExpiration);
}
/// <summary>
/// Remove item from cache
/// </summary>
/// <param name="key">Name of cached item</param>
public static void Clear(string key)
{
HttpContext.Current.Cache.Remove(key);
}
/// <summary>
/// Check for item in cache
/// </summary>
/// <param name="key">Name of cached item</param>
/// <returns></returns>
public static bool Exists(string key)
{
return HttpContext.Current.Cache[key] != null;
}
/// <summary>
/// Retrieve cached item
/// </summary>
/// <typeparam name="T">Type of cached item</typeparam>
/// <param name="key">Name of cached item</param>
/// <param name="value">Cached value. Default(T) if item doesn't exist.</param>
/// <returns>Cached item as type</returns>
public static bool Get<T>(string key, out T value)
{
try
{
if (!Exists(key))
{
value = default(T);
return false;
}
value = (T)HttpContext.Current.Cache[key];
}
catch
{
value = default(T);
return false;
}
return true;
}
}
2
從你的其他問題我讀到,你正在使用3層架構與達爾,業務和表示層。
所以我假設你有一些數據訪問類。理想的做法是獲得相同類的緩存實現,然後進行緩存。例如:如果你有一個IUserRepository接口,那麼UserRepository類將實現它並通過方法在db中添加/刪除/更新條目,然後你也可以擁有CachedUserRepository,它將包含UserRepository對象的實例以及它將首先看到的get方法進入緩存,對照某個鍵(從方法參數派生),如果找到該項,則返回它,否則調用內部對象上的方法;獲取數據;添加到緩存然後返回。
您的CachedUserRepository顯然也會有緩存對象的實例。有關如何使用Cache對象的詳細信息,請參閱http://msdn.microsoft.com/en-us/library/18c1wd61(v=vs.85).aspx。
+1
......只是針對一般文化/詞彙,這叫做「裝飾者」模式。也就是說,你用一個額外的實現緩存的功能「裝飾」了初始倉庫。 – tsimbalar
相關問題
- 1. ASP.NET中的數據緩存
- 2. ASP.NET中的數據緩存
- 3. ASP.NET數據緩存
- 4. ASP.NET MVC - 緩存IQueryable數據
- 5. 關閉數據緩存asp.net
- 6. ASP.NET數據緩存設計
- 7. 緩存數據.Net 4.0(Asp.NET)
- 8. 在ASP.NET MVC中緩存數據3
- 9. 在ASP.net中緩存數據MVC
- 10. 帶有Azure Redis緩存的ASP.NET數據緩存?
- 11. ASP.NET中的緩存
- 12. Asp.net中的緩存?
- 13. Asp.net數據庫內容緩存
- 14. ASP.Net服務器側數據緩存
- 15. 緩存一個數據列表asp.net c#
- 16. mysql中的數據緩存
- 17. Retrofit2中的數據緩存
- 18. .NET中的數據緩存
- 19. 在Asp.net中緩存
- 20. 在ASP.NET緩存中緩存EF實體
- 21. 緩存數據流中的數據集
- 22. 在asp.net中爲GridView中的動態數據緩存
- 23. 在sql server數據庫中存儲asp.net緩存
- 24. 在內存中緩存大型數據集在ASP.net服務器
- 25. httpcontext中的asp.net緩存
- 26. asp.net中的緩存問題
- 27. asp.net中的緩存問題
- 28. 查找用於asp.net緩存的數據庫中的表?
- 29. 緩存內存中的大量數據
- 30. asp.net中的數據緩存安全問題
不錯的代碼... upvoted –