2012-04-22 1 views

答えて

1

通常、値/データが期限切れになることがわかっている場合や一定期間後に変更が必要な場合は、静的変数を使用してください。私はプロパティを使用してアプリケーションの開始までに一度、データベースからその値を設定しますあなたのこれらの定数の設定を静的クラスを作成することをお勧め同様の議論HttpRuntime.Cache[] vs Application[]
はまたASP.NET Caching: Techniques and Best Practices

0

はい、静的変数にキャッシュできます。しかし、今は変更する必要がなく、同じままにしておくと、それらを定数またはweb.configで定義してください。

0

をチェックアウトしました。

データベースに格納されている「システム」設定があるときはいつでも同じことをしています。私はそれらをプロパティとして静的なクラスに保ち、常にアクセスします。また、データベーストラフィックを減らすために頻繁には使用されないが、頻繁に使用されない小さなテーブル(つまりアイテムグループ)の内容にも同じ手法を使用します。私は読み取り専用のコレクションを作成し、常にデータベースにアクセスする代わりにアクセスします。

しかし、清潔で維持しやすいものであれば、何が最良のものであるかの問題です。

0

個人的に私のMVCサイト(私が好むものはninject)に依存性注入を使用します。これにより、変数を.InSingletonScopeとして定義することができます。これは、アプリケーションで厄介な統計をぶら下げる必要がないことを意味します。私は最初の要求でDBから値をロードし、それをローカル変数に格納し、それをうまく整理します。

つまり私はこれを使用します。それはバインド

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ベースのconfigメソッドに変更することもできます。

関連する問題