1

動的 php (Yii フレームワーク ベース) サイトを持っています。ユーザーは、サイトで何かを行うためにログインする必要があります。キャッシングと CDN がどのように機能するかを理解しようとしています。と私は少し混乱しています。

キャッシング (memcache) :

私のサイトには大量の css、js、画像があります。キャッシング (「memcache」?) を有効にすると、サイトが大幅に高速化されることがわかりました。しかし、これは私を混乱させました。キャッシュはどのように役立ちますか? つまり、DB から出てくるものをユーザーごとに個別にキャッシュするにはどうすればよいでしょうか? たとえば、user-1 がログインすると、自分のコントロール パネルが表示されます。ユーザー 2 がログインすると、ユーザー 2 のコントロール パネルが表示されます。

何をキャッシュするかを決定するにはどうすればよいですか? さらに、キャッシング (memcaching) を有効にするにはどうすればよいですか?

CDN:

CloudFlareのようなコンテンツ配信ネットワークを使用するように言われました。私のサイトを自動的にキャッシュすることになっています。では、user-1 がログインすると、何をキャッシュするのでしょうか? ホームページの CSS、JS、およびホームページの画像のみをキャッシュしますか? 他のすべてにログインが必要だからですか?ユーザーがログアウトするとどうなりますか? つまり、「セッション」は CDN の動作に干渉しますか?

CDN 経由で画像を提供すると、サーバーの負荷が大幅に軽減されますか? クラスタ化されたサーバー構成を取得するための現金はあまりありません。したがって、(共有) サーバーがすべてのリソースを PHP コードの処理に専念できるようにしたいだけです。では、「キャッシング」(memcache など) や「CDN」(CloudFlare など) を使用すると、どのくらいの負荷を節約できますか?

最後に

キャッシング、cdn、および基本的なパフォーマンスの最適化のために、このシナリオで実装する一般的な戦略は何ですか? CloudFlare のような CDN を有効にし、キャッシュを有効/実装/構成するには、php コードを変更する必要がありますか? 開発者/コーディングの時間を最小限に抑え、サイトの実行速度を大幅に向上させるにはどうすればよいですか?

ちょっと待って、「私たちについて」ページなどの私のページのいくつかも静的htmlになる予定です。しかし、彼らはそれほど多くのヒットを取得しません。私のFacebookページに使用されるiFrameページを除いて.

4

3 に答える 3

3

私は実際に CloudFlare で働いており、懸念事項のいくつかに対処するために参加したいと考えていました。

「CloudFlare のような CDN を有効にし、キャッシュを有効/実装/構成するには、php コードを変更する必要がありますか?開発者/コーディングの時間を最小限に抑え、サイトの実行をはるかに高速化するにはどうすればよいですか? ?」

いいえ、URL を書き直す必要はありません。静的コンテンツはファイル拡張子ごとに自動的にキャッシュされます。ただし、これには DNS を変更して弊社を指すようにする必要があります。

CDN 経由で画像を提供すると、サーバーの負荷が大幅に軽減されますか?

はい、また、ほとんどの訪問者がサイトにすばやくアクセスし、帯域幅をかなり節約するのにも役立ちます.

「ちょっと待って、「私たちについて」ページなどの私のページのいくつかも静的 html になる予定です。」

CloudFlare はデフォルトで HTML をキャッシュしません。PageRulesを使用して、静的 HTML などのより高度なキャッシュ オプションを設定します。

于 2012-03-02T21:59:54.760 に答える
1

Memcached は、データベース情報 (通常はリモート サーバーまたは同じサーバー上のデータベース エンジンから) を Web サーバーのファイル システムにフラット ファイル形式で格納することによって機能します。フラット ファイルに直接アクセスして、規制された形式で保存されたデータを取得することは、毎回リモート クエリからそのデータにアクセスするよりもはるかに高速です。これは通常、データが定期的に変更されることがないため、一定期間安全に保存できるデータがある場合に役立ちます。

これが機能する方法は、ユーザーのアカウント情報をキャッシュに保存して、そのユーザーがログインしているページの読み込みを高速化する場合です。情報を読み込み、ローカルにキャッシュします。そのデータに対する後続のリクエストでは、データベース自体からその情報をロードするのに通常かかる時間よりもわずかな時間でロードされます。ユーザーがログイン中に情報を変更した場合は、その情報を更新/再キャッシュする必要があることは明らかですが、ページの待機時間を最小限に抑えることができるキャッシュ システムを実装すると、ページの提供にかかる時間が大幅に短縮されます。データベース。

私は個人的に CloudFlare に詳しくないので、そのようなアドバイスを提供することはできませんが、アプリケーションにキャッシュを実装するという点では、以下を確認してください。

http://code.google.com/p/memcached/wiki/NewOverview

そして、インストール/実装などをカバーする残りの Wiki エントリを読んでください。これにより、正しい軌道に乗ることができます。

于 2012-03-02T18:09:41.817 に答える
1

ユーザーごとにディスク io を実行する代わりに、データがメモリに保存されるため、つまり memcached にキャッシュが役立ちます。これにより、パフォーマンスが大幅に向上します。

Memcache は通常、クエリ結果などのデータをキャッシュするために使用されます。 http://pureform.wordpress.com/2008/05/21/using-memcache-with-mysql-and-php/ たくさんのチュートリアルがあります。

私はこれまで、CDN ではない Amazon s3 しか使用したことがありません。これはどちらかというとストレージ プラットフォームですが、メディアを提供するときに自分のサーバーの負荷を軽減するのに役立ちます。

すべての静的リソースを CDN に配置して、独自のサーバーがこれらを提供する必要がないようにします。PHP コードを変更する必要はありません。これには JS と CSS が含まれます。あなたの静的ページ(あなたのaboutページ)については、理由がないのでphpがそれを処理していないことを確認します。Web サーバーは、それを直接提供する必要があります。

キャッシュにはコードの変更が必要です。キャッシュの場合、通常のフローは次のとおりです。1) ユーザーがリクエストを送信します。2) データがキャッシュにあるかどうかを確認します。3) データがキャッシュにない場合は、DB クエリを実行してキャッシュに入れます。4) データがキャッシュにある場合は、データを取得します。5) 戻ります。データ。

ディスク io を必要とするものは何でもキャッシュでき、速度が向上するはずです。

于 2012-03-02T18:26:51.800 に答える