(A)$ _ SESSION配列のすべてのページ読み込みで使用されるデータをキャッシュする(ただし、データを新しく再読み込みするためのフラグをテーブルにクエリする)方が「優れている」(より効率的、高速、安全など)か。または(B)毎回データベースからロードしますか?
キャッシュ方式(A)を使用していますが、何百人ものユーザーがいると、メモリが問題になるのではないかと心配しています。これは、名、姓、誕生日などの単純なデータです。
どちらの方法でも、クエリはまだ実行されています。考え?
(A)$ _ SESSION配列のすべてのページ読み込みで使用されるデータをキャッシュする(ただし、データを新しく再読み込みするためのフラグをテーブルにクエリする)方が「優れている」(より効率的、高速、安全など)か。または(B)毎回データベースからロードしますか?
キャッシュ方式(A)を使用していますが、何百人ものユーザーがいると、メモリが問題になるのではないかと心配しています。これは、名、姓、誕生日などの単純なデータです。
どちらの方法でも、クエリはまだ実行されています。考え?
データがすべてのページで使用され、すべてのユーザーで同じである場合、データを$ _SESSION(ユーザーごとにそのデータの異なるコピーを持つことを意味します)にキャッシュしませんが、次のような別のメカニズムを使用します。
データが各ユーザーで同じでない場合(名前、生年月日などをキャッシュしているため、状況に当てはまるようです):
補足として:同じクエリを何度も実行している場合は、DBサーバーがそれを単独でキャッシュする必要があります(MySQLの場合、「クエリキャッシュ」に入ります)。だから、あなたが思うほど悪くはないだろう、と私は思う-それほど最適化されていなくても^^
それはあなたがセッションハンドラーであるものに依存します。セッションハンドラーはMySQLである可能性があるため、どちらが優れているかではなく、セッション処理を最適化する方法が問題になります。
デフォルトのPHPセッションハンドラーはファイルですが、mysqlに簡単に変更できます。
ユーザー固有ではないデータについて話している場合は、それをDBに保存するだけです。後で問題が発生した場合の最適化について心配してください。通常、事前に最適化を検討するよりも、より優れたデザインパターンを使用する方がはるかに有益です。ストレージに別のハンドラーを簡単に使用できるようにコードを設計し、後で最適化の問題が発生しないようにします。
ユーザー固有の場合はセッションを使用しますが、必要に応じて適切なセッションハンドラーを使用します。