いくつかの混乱を解消するには、データがある程度大きくなる可能性がある場合に、グローバル変数を保存するためのセッションアプローチを使用すると適切かどうかアドバイスが必要ですか?データが大きい場合、グローバルアクセスのためにセッションに変数を格納するのが適切ですか?
答えて
いいえ、そうではありません。データをdbまたはいくつかのキャッシュに格納し、セッション内の一部のIDだけを保持します。
一般的に、セッションに保存する内容には非常に注意する必要があります。
デフォルトの動作は、本番サーバーをもたらす可能性メモリに大きなセッションデータを保存するASP.NETワーカープロセス
https://msdn.microsoft.com/en-us/library/ms178581.aspx
のメモリ空間にセッション変数を格納することです。ここに理由です間もなく物理的なメモリが使い果たされるため、クロールする必要があります。その後、あなたはメモリリークがどこにあるのか疑問に思って、それを探して時間を過ごすでしょう。
メモリを気にしない限り、プロダクションや開発中のInProcセッションモードを使用しないように助言します。いくつかの良いセッション状態プロバイダがあります。すなわちRedis Session State Providerです.Nugetをインストールし、web.config
ファイルに設定するだけです。
InProc以外のストアを使用する場合は、セッションに入れたデータが適切にシリアライズ可能であることを確認する必要があります。そうでない場合は、開発中にプロダクションサーバーに公開した後に見つけ出すほうがよいでしょう。したがって、開発と生産に同じSession State Providerを使用するようアドバイスしました。
グローバル変数は、セッションにはあまり適していません。セッションはユーザーごとであり、グローバルではありません。これに加えて、セッションは20分後に局所的に期限が切れますが、これは設定で制御できます。
私はこのためにアプリケーションキャッシュを使用します。これはグローバルで誰もがアクセスできるものです。さらに、データをいつでもリロードすることができます。
ここで、データのサイズにも意味があります。私は大量のデータをキャッシュに入れません。
もう1つの選択肢はデータベースを使用することであり、私はNoSqlデータベースを使用します。通常、データセットをキャッシュする場合、リレーショナルである必要はありません。データは簡単に前後に並べ替えることができるため、NoSqlデータベースでは素早く安価に設定できます。
- 1. ASP.netセッション変数に格納されるデータの最大量
- 2. modeがStateServerのセッション変数に文字列を格納する場合
- 3. オブジェクトをセッション変数に格納する
- 4. 環境変数を格納するのに最適な場所
- 5. 構造体をColdfusionセッション変数に格納できますか?
- 6. 膨大な数のセッションを格納するための最も効率的なデータ構造は何ですか?
- 7. 状態値を格納するためのReduxの適切な場所/方法
- 8. 複数のキーで値を格納するための適切なデータ構造は何ですか?
- 9. SharedPreferenceは大量のデータを格納するのに適していますか?
- 10. python - 変数が再帰に適切な結果を格納しない
- 11. セッション変数に異なる変数を格納する方法
- 12. ダイナミックフィールドを格納するための適切なテーブル構造は何ですか?
- 13. セッションの外でPHPに変数を格納する
- 14. SQLにデータを格納する適切な方法
- 15. 変数にajaxデータを格納する
- 16. マップ内にオブジェクトを格納するのが正しい場合
- 17. データベースにセッション変数を格納できません
- 18. セッション変数が値を格納していない
- 19. 名前が変数に格納されている場合、Pythonのモジュールレベルの関数にアクセスする
- 20. PHP - 大きなセッション配列を$ _SESSIONまたはデータベースに格納するには?
- 21. MYSQLは、同じ文字列が複数の行に格納されている場合に最適な方法で格納しますか?
- 22. セッション中の(Caching)変数と[格納]変数の違いは何ですか?
- 23. Javascript:forループで変数にデータを格納
- 24. 機密情報をセッション変数に格納するのは安全ですか?
- 25. セッションまたはローカルストレージに変更するjQuery変数を格納する
- 26. クラスメソッドを変数に格納するために構造体を適用することは可能ですか?
- 27. Android:AccountManagerにデータを格納する場所
- 28. PHPセッション変数が常時格納されていない
- 29. 大きなデータのpythonを格納
- 30. Ember RESTAdapterに永続変数を格納する適切な方法
「グローバルアクセス」とは、すべてのユーザーが同じデータ、または各ユーザーが自分のプライベートコピーに「常に」アクセスできることすべてのユーザーが同じデータを読み込んだ場合は、Sessionの代わりにCacheを使用してみてください。 –
すべてのユーザーが自分のプライベートコピーを持っている必要はありません。 –
これは役立ちます:[セッション状態の使用について2回考える](https://brockallen.com/2012/04/07/think-twice-about-using-session-state/) – NightOwl888