asp.net アプリケーションで使用しているクラス ライブラリにキャッシュを実装しています。
キャッシュを更新するための静的メソッドを使用して、シングルトン パターンとしてキャッシュ オブジェクトを作成しました。これは、キャッシュする必要があるデータのコレクションをメンバー変数/プロパティにロードするだけです (もちろん、いくつかのロック ロジックを取得しました)。呼び出すだけでデータにアクセスできるので、これは良い方法だと思いました
MyCacheObject.Instance.MyDataCollection
いくつかのキーで分割された大量のデータを格納するために、新しいキャッシュ オブジェクトを作成しています。私が言っているのは、新しいキャッシュを作成しているということですが、これはすべてのデータを一度にロードするのではなく、アクセスされたキーごとにコレクションを保存します。
MyOtherCacheObject.Instance.MyOtherDataCollection(indexkey)
今回はガベージコレクションについての質問が持ち上がりました。大量のデータを保存しているので、いきなりGCされたらもったいないですよね?これは単なるシングルトン パターンであるため、データがキャッシュに保持されることを保証するものは何もありません。
だから私の質問は - この状況を処理するためにキャッシュを実装するためのベストプラクティスは何ですか? 私はこれに対する非常に複雑なソリューションが本当に好きではありません.System.Webにキャッシュがあることは知っていますが、これは単なるクラスライブラリであるため、少し「ずれている」ようです.