PHP で Memcached を使用する方法を学び始めたところですが、疑問に思っていました。使い始めるべきポイントはありますか?データをキャッシュする方が常に効率的ですか、それともサイトが一定数のヒットを獲得した場合にのみ有効になりますか? Memcached に関連するオーバーヘッドがあると思われますが、速度の利点がこれを上回るのはいつでしょうか?
アドバイスをよろしくお願いします。
memcached を使用しないとサイトやサーバーに影響が出始めたら、使用を開始する必要があります。
したがって、1 日に 100 人の訪問者しかいないにもかかわらずサイトの応答が速い場合は、わざわざ使用しないでください。
しかし、ページごとに 200 ミリ秒以上の実行時間があり、サイトも遅いと感じる場合は、PHP プロファイラーを使用してボトルネックを探す必要があります (XDebug は、WinCacheGrind または KCacheGrind と組み合わせて使用できるものを統合しています)。特に、データベース リクエストをキャッシュすると、読み込み時間がいくらか短縮されます。
パフォーマンスの最適化に関する一番のルールは次のとおりです。必要になるまで最適化しないでください。
パフォーマンスの問題がない場合は、最適化する必要はありません。その他の適切なルールは次のとおりです。
アプリケーションの作成が完了するまで最適化しないでください。開発中に実際のパフォーマンスの問題がどこで発生するかを知ることはめったにありません。また、後で変更を加える必要がある場合に、コードがだらしなく、変更がより困難になるだけです。
プロファイラーまたはコードの特定のチャンクを測定するその他の方法を使用して、時間がかかっている部分を実際に測定し、それらのセクションを最適化します。時間がかかっていることだけを推測しないでください。実際に採寸します。
MySQL をデータベースとして使用している場合は、ピーク時に MySQL コンソールで show processlist コマンドを実行します。PHP 側から多くのクエリが 500 ミリ秒以上待機している場合は、memcached を使用する必要があります。
キャッシングを行うために Memcached を使用する必要があるかどうかを考える前に、まず何を、いつ、どの場合にキャッシュするかを考えてください。
作成するために多くのデータベース読み取りを必要とする多くのリクエストに応答するために使用される「オブジェクト」がある場合。そして、あなたのサイトは、その「オブジェクト」オフェンスを再作成するため、その負荷に追いつくことができません. また、キャッシュしているアイテムに対して適切に定義された適切なキーも必要です。
キャッシュしている「オブジェクト」は、それを作成するために使用されるデータベース行が変更されるよりもはるかに頻繁に読み取られる必要があります。そうでない場合、キャッシュの利点は、データの一部が変更された後のキャッシュを管理するコストよりも少なくなる可能性があります。
単一のデータベース行をキャッシュしても、一致の利点は得られません。