私は動的PHP(Yiiフレームワークベース)サイトを持っています。ユーザーはサイト上の何かを行うためにログインする必要があります。私はキャッシングとCDNの仕組みを理解しようとしています。私は少し混乱しています。キャッシング、CDN - PHP Yiiサイトでは同じですか?どのように動的なPHPサイトのためにそれを使用するには?
キャッシュ(memcacheの):
私のサイトは、JS、CSSの良い量を持っている、とイメージ。私はキャッシングを有効にすること( "memcache"?)が私のサイトをかなりスピードアップすることを理解しています。しかし、これは私を混乱させる。キャッシュはどのように役立ちますか?つまり、各ユーザーごとにDBから出てくるものをどのようにキャッシュすることができますか?たとえば、ユーザー1はログインして、コントロールパネルを表示します。ユーザー2がログインすると、ユーザー2にコントロールパネルが表示されます。
キャッシュする対象を決定するにはどうすればよいですか?さらに、どのようにキャッシュ(memcaching)を有効にするのですか?
CDN:
私はCloudFlareのなどのコンテンツ配信ネットワークを使用するように言われています。私のサイトを自動的にキャッシュしているとします。だから、私のuser-1がログインすると、それは何をキャッシュに入れますか?それはホームページのCSS、JS、およびホームページの画像だけをキャッシュしますか?それ以外はログインする必要があるからですか?ユーザーがログアウトするとどうなりますか?つまり、「セッション」はCDNの作業に干渉しますか?
CDN経由で画像を配信すると、サーバーの負荷が軽減されますか?クラスタ化されたサーバー構成を取得するための現金はあまりありません。だから、自分の(共有の)サーバがPHPコードの処理にすべてのリソースを費やすことができるようにしたいだけです。それで、「キャッシング」(memcacheのようなもの)や「CDN」(CloudFlareのようなもの)を使ってどれくらいの負荷を節約できますか?
最後に、
キャッシング、CDN、および基本的なパフォーマンス最適化のために、このシナリオで実装するための一般的な戦略がどうなりますか? CloudFlareのようなCDNを有効にし、キャッシュを有効化/実装/設定するために私のPHPコードを変更する必要がありますか?少なくとも、開発者/コーディング時間を最小限に抑え、私のサイトをはるかに速く動かすことができますか?
ああ、「私たちについて」のページのような私のページのいくつかは静的なHTMLにもなります。しかし、彼らは多くのヒットを得ることはありません。私のFacebookページに使用されるiFrameページを除いて。
ありがとう、dm03514と@Brian。私は今キャッシングがどのように動作するのか理解していますしかし、これは別の疑問を生みます。すべてのユーザーは異なっており、異なるアカウントを持っています。ですから、もし私がクエリをキャッシュするならば、それらのクエリはその特定のユーザにしか良いものではありません!したがって、50,000人のユーザーがいる場合は、これらの5万人のユーザーのそれぞれに対してクエリをキャッシュする必要があります。さらに、結果セットが更新された場合はどうなりますか?キャッシュには古い結果セットが表示されます。 –
遅れて申し訳ありませんが、私はあなたが使用するキャッシュシステムに基づいて変化する笑を動かしてきました。ほとんどの場合、頻繁に変更されることのないユーザー固有のデータ(電子メールアドレス、名前、環境設定などのアカウントデータ)や頻繁に変更されないグローバルデータ(ページコンテンツ、ユーザーコメントなど)。頻繁に変更される可能性のあるデータをキャッシュすることに決めた場合、キャッシュされたデータに単純なTTL(有効期限)の有効期限を使用することはできず、代わりにそのデータを手動で期限切れにする必要があります。 – Brian