2012-04-03 18 views
3

私はクライアントのウェブサイトにいくつかのページを書き直してみました。例えば、誰かがログインするとすぐに、53セッション変数が設定されています。ウェブサイト全体でのセッションの使用

私にとっては、ログインするとすぐにすべてを設定してから、ウェブサイト全体を通してこれらのセッションを参照したり、新しいものを追加したりすることは狂っているようです。

多くのセッションの1つが価値を失ったため、サイトにエラーが発生することがよくあります。

私の質問は、これらのページを再開するための最良の方法です。

  1. このセッション数を引き続き使用することをお勧めしますか?
  2. セッションを使用すると良いでしょうか?
  3. サイトのすべてのページに必要な変数があるので、各ページのデータベースからこれらの値を取得するか、セッションでこれらの値を設定する方が良いでしょうか?

セッションが1つだけ必要であり、それはUSERNAME/USER-IDである必要があり、必要なときにはデータベースから取得する必要があると思います。事前全ての

+1

ユーザーあたりセッション値または複数のセッションを意味しますか? – jrummell

+0

申し訳ありませんが、それはセッション変数だったはずです - 今編集しました –

答えて

3

セッションを頻繁に使用することはお勧めできませんが、そこに保存されているデータの種類によって異なります。文字列と整数値の束であれば、おそらくそれほど心配はありませんが、セッションで堅牢なオブジェクトや大きなデータセットを格納しているなら、それをリファクタリングすることは間違いありません。

経験則として、私はユーザー関連のデータ以外のセッションを使用しないようにしています。これ以外の目的でセッションを使用することは魅力的ですが、本当に必要ではない優れた設計と実装でセッションを使用することができます。ここで

は、物事を保存する場所の指導原則のカップルです:ユーザー固有であり、データベースへの旅行を減らすためにセッションを使用し、アプリケーション全体で頻繁にアクセスされるデータについては

  • 静的でユーザーに依存しないデータの場合は、キャッシュまたはアプリケーションの状態を利用してデータベースへのアクセスを減らします。

  • ページ固有のデータの場合は、 ViewStateおよび/または隠​​しフィールドを使用します。しかし、大規模なオブジェクトまたはデータ、ユーザーは、ページを参照してください

上記の原則にページからの情報を渡すためのQueryStringを使用することを検討するために安全と見なされているデータについては

  • のセットを格納するのViewStateを使用していません通常は正しい方向にあなたを導くでしょうが、何かと同様に例外があります。データを保管している場所とそこに格納する理由を考えてみてください。うまくいくはずです。

  • +0

    ありがとうございます。ウェブサイトを再開するときにあなたの提案のいくつかを試してみてください –

    0

    まずにおける

    おかげで、私は非常にあなたがセッション変数を参照している意味するであろうユーザーごとに複数のセッションを、持っている疑い。

    第2に、目標はすべてあなたの目標に依存しますが、この変数が多い場合は、代わりにDBを使用して必要なときに取得する必要があります。 53のセッション変数は確かにどんなウェブサイトでも大変です。

    +0

    私はSession変数をご紹介していました申し訳ありません - あなたが53が多すぎると思ったら、123セッションを設定したページを見つけました:O –

    0

    これは状況によって異なりますが、53個のセッション変数がそれぞれ必要な理由を調べて正当化します。これは予期しないことではありませんが、セッション記憶域が占有するRAMの量は、サイトがサポートできる同時ユーザー数に影響するため、考慮する必要があります。

    @waltherが示唆しているようにすることもできますが、データベースに入れることで(ネットワーク)データベース呼び出しのメモリ内セッション操作が交換されるため、正当化が必要になります。多分、値の一部は実際にはグローバルであり、セッションに固有ではないでしょうか?その場合、それらをCacheオブジェクトに移動することができます。

    基本的には、使用状況を調べ、適切なストレージスコープを提示してください。必要であればセッションに残しても構いませんが、その影響とその意味を理解する必要があります。

    関連する問題