2012-04-22 23 views

回答

0

是的,你可以在一个静态变量缓存。但是,如果他们现在不需要改变并且保持不变,那么为什么不将它们定义为常量或web.config?

0

我建议建立一个静态类,其性质会从数据库一旦启动了您的应用程序的设置它的价值你的这些常数设置。

每当我有存储在数据库中的“系统”设置时,我都会做同样的事情。我将它们作为属性保存在静态类中,并始终访问它们。我还使用相同的技术来处理小型表格(即项目组)的内容,这些小型表格不经常更改,但为了减少数据库流量而使用了很多。我创建只读集合并访问它们,而不是始终访问数据库。

但是任何事情都是最适合你的事情,只要它干净易维护。

0

我个人使用依赖注入为我的MVC网站(ninject是我喜欢的)。这使您可以将变量定义为.InSingletonScope,这意味着您不需要在应用程序中留下令人讨厌的静态内容。然后,我在第一次请求时从数据库加载数值,并将其存储在本地变量中,并且它非常整齐。

即我这样做:

public class CachedFooProperty : IFooProperty 
{ 
    public CachedFooProperty(IRepository<Foo> fooRepo) 
    { 
     Foo = fooRepo.GetFoo(); 
    } 
    public Foo Foo{get;private set;} 
} 

然后将它绑定这样的:

Bind<IFooProperty>().To<CachedFooProperty>().InSingletonScope(); 

约做事这种方式的好处是它很容易打开和关闭缓存通过简单地改变绑定。你也可以很简单地改变这个基于web.config的配置方法,而不用改变你使用设置的每个地方。

相关问题