我需要从某些参考数据中填充一些下拉框。即城市名单,国家列表等。我需要填写各种网络表格。我认为,我们应该将这些数据缓存在我们的应用程序中,这样我们就不会在每个表单上都打上数据库。我对缓存和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数据缓存设计
- 5. 缓存数据.Net 4.0(Asp.NET)
- 6. ASP.NET MVC - 缓存IQueryable数据
- 7. 关闭数据缓存asp.net
- 8. 在ASP.net中缓存数据MVC
- 9. ASP.NET中的缓存
- 10. Asp.net中的缓存?
- 11. 缓存一个数据列表asp.net c#
- 12. Asp.net数据库内容缓存
- 13. Retrofit2中的数据缓存
- 14. .NET中的数据缓存
- 15. mysql中的数据缓存
- 16. 在Asp.net中缓存
- 17. 在ASP.NET缓存中缓存EF实体
- 18. 在内存中缓存大型数据集在ASP.net服务器
- 19. asp.net中的缓存问题
- 20. httpcontext中的asp.net缓存
- 21. asp.net中的缓存问题
- 22. ASP.NET中的缓存模式
- 23. 查找用于asp.net缓存的数据库中的表?
- 24. 缓存内存中的大量数据
- 25. 在ASP.Net中缓存来自后台页面的数据
- 26. 如何备份Asp.Net MVC应用程序中的缓存数据?
- 27. ASP.Net中的数据缓存vs会话对象
- 28. 在asp.net中的数据缓存客户端?
- 29. Hazelcast缓存数据库数据缓存的Java
- 30. 在python中缓存数据库数据
不错的代码... upvoted –