セッションに2〜3個の追加変数を格納する場合のパフォーマンスの問題は何ですか?にとって:
1〜2クエリを保存するには(ページの読み込みごと)?
コードを簡単にするには?
ウェブサイトへのヒット率は正常です。
編集@all私は2つの3つのセッション変数について話しています...数値、IDなどの単純な値
セッションに2〜3個の追加変数を格納する場合のパフォーマンスの問題は何ですか?にとって:
1〜2クエリを保存するには(ページの読み込みごと)?
コードを簡単にするには?
ウェブサイトへのヒット率は正常です。
編集@all私は2つの3つのセッション変数について話しています...数値、IDなどの単純な値
パフォーマンスの問題はありません。セッションにオブジェクトと変数を格納できますが、パフォーマンスが大幅に低下することはありません。
セッションを使用するPHPスクリプト/ページにアクセスするたびに、セッションデータを読み取る必要があります。デフォルトでは、そのデータはファイルとしてディスクに保存されます(たとえば、それをオーバーライドしてデータベースを使用できます)
したがって、基本的に、ページの読み込みごとに、PHPによってある程度のセッションデータを読み取る(そして、おそらく書き込む)必要があります。セッションに保存するデータが多いほど、セッションファイルは大きくなります。
いくつかの変数のみを格納する場合は、問題はありません。しかし、巨大な配列のようなものを格納し始めると、ヒット率が上がると問題が発生します。
-
セッションにできるだけ多くのデータを格納することで「コードを単純に保つ」場合は、代わりにさらに多くの問題が発生する可能性があります。たとえば、将来APIアクセスを有効にする場合は、多くのセッションデータストレージ/取得コードを削除して、他のメソッドに置き換える必要があります。
-
あなたの問題とは無関係かもしれません:
ある種のグローバルアプリケーションの状態をセッションに保存して、再計算する必要がない場合は、セッションの代わりに他のキャッシュ方法を使用する必要があります。
実際には、パフォーマンスの面で少し節約することになりそうです。これらの値が単純な文字列や数値、または小さな配列やオブジェクトである場合は、これがより適切なオプションになります。ただし、数千のキー=>値のペアを含む配列を保存している場合は、特定の状況で必要かどうかによっては、クエリを再実行する方がよい場合があります。
更新するたびに、セッション変数に格納されている各オブジェクトのコンストラクターを起動することを覚えておいてください。大きなオブジェクト=重いペイロード。
実用性ほどパフォーマンスの問題ではありません。セッションに巨大な配列を格納することを考えていないというあなたの質問を読むことで、私には明らかです。
この問題は、別のユーザーによるアクションが現在のセッションに格納されている値、つまりユーザーがアクセスできるものとできないものを示すboolの配列に影響を与える必要がある場合に実用的になります。それらをセッションにキャッシュすると、アクセス許可を取り消すことは実用的ではなくなります。
不変であると見なされる文字列や値、または現在のユーザーのアクション(つまり、ユーザー名の変更)によって簡単にリセットできる文字列や値の保存を避ける理由はありません。