获取内存缓存中的静态记录

时间:2014-08-01 17:33:36

标签: sql-server asp.net-mvc entity-framework memory

对于不经常更新的小型数据集,例如查找值,我想构建一种在应用服务器的内存中缓存它们的方法,而不是经常查询 他们在数据库中。 我拥有的最佳方法是将它们保存在我的应用程序的静态字段中:

public class MyClass
{
  public static List<UserRoles> userRolesList;
}
protected void Application_Start()
{
  //some stuff
  MyEntities db = new MyEntities();
  MyClass.userRolesList = db.UserRoles.ToList();
  //...
}

目标是否有更好的方法?

1 个答案:

答案 0 :(得分:0)

我倾向于同意客户端上的静态变量是存储小信息集(例如查找)的最佳位置。

对于大型集合,我将从服务器查询子句并避免存储在静态内存中。但是,您可以从服务器获取整个集合并存储在本地缓存中,例如隔离存储或磁盘上。

为您的客户提供一个编码建议,在您的主应用中放置一个公共结构(ClientData)。 (例如,对于WPF / Silverlight)

public partial class App : Application
{
   public struct ClientData
   {
      public static bool IsInitialized = false;
      public static ObservableCollection<string> DataTypes;
      public static Dictionary<int, CategoryType> CategoryLookup;
   }
}

然后您可以在整个程序中访问静态数据,如下所示:

if (App.ClientData.IsInitialized)
{
   DataList.ItemsSource = App.ClientData.CategoryLookup;
}