私は、HTMLメニューを構築するSharePointサイト用のユーザーコントロールを作成しました。これはマスターページに挿入されており、それを使用するすべてのページでレンダリングが終了します。このHTMLを生成している間にかなり計算コストの高い呼び出しが行われており、キャッシュはページロードを賢明に保つための論理的選択です。これまでHttpRuntime Cacheはこれまで完全に機能していました。SharePointでセッション状態を保存するためのオプション
これで、このユーザーコントロールのバージョン1.1がリリースされました。メニューのユーザーごとのカスタマイズを可能にするために、新しい要件が盛り込まれました。私はもはや盲目的にHttpRuntime Cacheオブジェクトを使用することができないという点を除いては問題ありません。少なくとも、ユーザーIDの前に置かずに、ユーザーを特定のものにする必要はありません。
理想的には、ASP.NETセッションコレクションを使用してユーザー固有のコードを格納できるようにしたいと考えています。私は確かに、ユーザーがアクティブでなくても、キャッシュにぶら下がっている必要はありません。これは実際にはセッション固有のデータです。 ViewStateやセッション管理を有効にするなど、いくつかのオプションを検討しました(デフォルトではでは無効になっています)。しかし、私は本当にそれらのいずれかに満足しているわけではありません。
私の質問は次のとおりです。このような出力をユーザー単位でどのようにキャッシングする必要がありますか?今、私の最善の策は、自分のユーザーIDをキャッシュキーに入れて、スライドの有効期限を与えることです。
私はあなたがセッション状態をあまりにも真剣に有効にすることによるパフォーマンスの影響を受けていると思います。セッションの使用に関するこの「終わりの日」のビューを描く1つの意見に頼るのではなく、パフォーマンステストを行い、特定のサイトへの影響を測定する必要があります。このリンクされた例では、「なぜ必要ないサイトでセッションを有効にするのはなぜですか?あなたがいくつかのページにメニューを表示しない限り、それはすべてのページに必要です。テストし、自分自身の影響を判断する。最小限に抑える必要があります。 –
@日産ファン:あなたはこれを答えにする必要があります。 –