私の AppStart.cshtml では、データベースからいくつかのデータをフェッチし、計算を行い、json 文字列をシリアル化/逆シリアル化します。次のようなことを行って、結果をいくつかの AppState 変数に保存します:(C#)
AppState["myVar1"]="aString";
AppState["myVar2"]=anArray;
これらの変数は頻繁にアクセスされ、定義するのは少し重いので、必要になるたびにゼロからデータを作成するよりも、このような方が理にかなっていると思いました。最適化が必要ない場合でも、そのデータが必要な場所に同じコードを配置しないことで、読みやすさと確実に保守性が向上するため、私には理にかなっています。
同様に、ユーザーがログインするたびにセッションにデータを入れることで、ユーザーごとに同様のアクションを実行します。
Session["userVar1"]="myString";
Session["userVar2"]=myAray;
ただし、これらに保存されているデータは、クリアされた可能性のあるサーバーメモリに保存されているため、読み取りたいときにまだ存在することに決して依存してはならないことを読みました。これは本当ですか?では、これらのいずれかにアクセスしたいときは、最初にそれが null かどうかを確認する必要がありますか? 運が良ければ null ではなく、すぐに使用できますが、運が良ければ再度設定します。これは、AppState と Session に格納されたデータが使用されることになっている方法ですか? もしそうなら、それらがnullの場合、それらを再設定する良い方法は何でしょうか? それらがnullの場合にそれらを設定する関数を作成するようなことをしていると思いますか?