PHP と MySQL をデータストアとして使用して、自分のサイトのユーザー システムを構築しています。ユーザーがログインするたびに MySQL クエリを実行したくないので、何らかのキャッシュ ソリューション ( memcache) を使用してユーザー データを保存します。
私の質問は、これを採用しても安全で実用的な方法ですか? そうでない場合、どうすれば MySQL クエリをできるだけ減らすことができますか?
そうですね、使用しているシステム/フレームワークのタイプに大きく依存します。私は長い間 Codeigniter を使用してきましたが、mysql の負荷を軽減したい場合は、Codeigniter キャッシュ メカニズムを使用できます。キャッシュ ドライバーを使用して、貴重な情報をフラット ファイル、memcache、または APC に保存できます。これにより、アプリケーションと mysql の負荷が大幅に軽減されます。
私のサイトhttp://www.amitavroy.comを確認すると、コンテンツを追加するために drupal CMS を使用しているサイトです。これは、2 年以上にわたってそれを行っており、フロント エンドを Codeigniter アプリケーションに変換したためです。そして、私のページはすべて HTML ページとして提供されます。ほとんどすべてのコントローラの上にキャッシュ メカニズムがあり、キャッシュ フォルダに利用可能なキャッシュされた HTML ファイルがあるかどうかをチェックします。存在する場合は、単一のクエリでもなく、HTML ファイルを出力として使用します。見つからない場合は、必要なクエリを実行します。
したがって、キャッシュがない場合、私のホームページは約 86 個のクエリを実行します。Drupal はその情報を多数のテーブルに分散させるため、かなりの負荷がかかります。ただし、ページがキャッシュされると、単一のクエリは実行されません。
これは非常に有用な方法であることが証明されています。過去に、非常に大量のトラフィックを処理しなければならないかなりの数の Web サイトに取り組んできましたが、このメカニズムは機能します。IO に依存して HTML ファイルを読み取るだけです。これは、知っていればブーストモジュールでも行うことです。
さらにサポートが必要な場合は、私に個人的に連絡することもできます。喜んでお手伝いさせていただきます。乾杯
サイトが処理する必要がある同時ユーザーの数は? 私の意見では、この種のキャッシュのオーバーヘッドは冗長です...
セキュリティに関して、まだ memcache を使用している場合は、アプリケーションに対するセッション オブジェクトと同様に、memcache もアプリケーションに対するものであることを思い出してください。ユーザーがアクセスできない限り、安全であると見なされます。
MySQL のオーバーヘッドを削減する他の方法は、ログイン後にセッション変数に一般的に必要なすべての情報を設定することです。