2010-11-18 36 views
0

私は自分の仕事のためにウェブサイト上で作業しており、別のユーザーにログインアクセスを許可する必要があります。私の家庭教師は、セッション変数/配列を使用して、名前、住所などのすべてのユーザーデータを格納する必要があると教えてくれました。セッション変数とデータベース

私のデザインで私はちょうどuserIDと電子メールアドレスを持っています必要に応じてデータベースからデータを取得します。彼は、データベースへの接続をたくさんしているので、これはサイトを遅くすると言います。

このデータにアクセスするには、すべてのデータをセッション変数に格納するか、データベースに接続する必要がありますか?

アドバイスありがとうございました:)。

答えて

3

最初にログインしたときにデータベースから情報を取得し、ログアウトするかセッションがタイムアウトするまでセッション変数に保持することができます。セッション変数に多くのユーザーデータを保存すると、同時にログインするユーザーが多い場合にはオーバーヘッドが発生する可能性がありますが、定数照会とは異なります。

回答する最良の方法は、ユーザーにとってどれだけのデータが存在し、どのくらいのデータが「典型的な」セッションで必要となるかを尋ねることです。ほとんどのユーザーがセッション中のある時点でロードする必要があるデータは、ログイン時にロードできます。通常のセッション中にほとんどのユーザーが必要としないデータは、オンデマンドでロードできます。

+0

オーバーヘッドはそれほど大きくはありません。すべてのユーザープロファイルを取得するための1つのクエリとして、後でリクエストで接続する必要があると予想できます。それほど大きな違いはないと思う。 – KingCrunch

+0

ありがとうございます。私は、特定のページでのみ、データベースに一定のクエリを行っていません。彼らはそれらについて保存された情報を表示したい場合など。すべてのページにデータベースへのアクセスが必要なわけではありませんが、ユーザーがログインしていることを確認するたびにセッションとデータベースを介して確認します。 – Elliott

+0

データベースの永続情報は+1しますが、パフォーマンスにはローカル値を使用します。 – Randy

0

答えは、あなたのソリューションでどのように "実世界"を得たいかによって異なります。いくつかのサーバー間で負荷分散される実際のトラフィックの多いサイトでは、データはデータベースに格納され、データベースからフェッチする際にmemcacheのようなものを使用して一定期間キャッシュされます。それを取り除く必要がない場合、セッションでのキャッシュは完全に受け入れられます。

関連する問題