web-dev-qa-db-ja.com

Gtmetrixは、最初のドメインの待ち時間に長い読み込み時間を示しています。減らす方法

ドメインの読み込みに時間がかかるのはなぜですか?
Gtmetrixタイムラインによると、最初のドメイン名の伝播には最大953ミリ秒かかります。

Blocking - 53 ms
Waiting - 843 ms
Receiving - 57 ms

場合によっては最大2秒かかることもあります。

以下はヘッダーからの応答です:

Server              Apache/2.2
Vary                Accept-Encoding
Cache-Control       no-cache
Content-Type        text/html; charset=utf-8
Content-Encoding    gzip
P3P                 CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"
Date                Wed, 22 Jan 2014 02:45:14 GMT
Pragma              no-cache
Connection          Keep-Alive
Set-Cookie          X-Mapping-alncmkhk=EDDD5D603AF7261BACF2EBF3FC8185A8; path=/
ed2f1641e2a81373908380a3799b0d29=59n2seqdchc1j6lvl48lepevg0; path=/
Content-Length      7806

Request Headers    
Host                www.mycarhelpline.com
User-Agent          Mozilla/5.0 (X11; Linux i686 on x86_64; rv:25.0) Gecko/20100101 Firefox/25.0
Accept              text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language     en-US,en;q=0.5
Accept-Encoding     gzip, deflate
Connection          keep-alive

アドバイス-これを90%以上大幅に減らすために正しく行うにはどうすればよいですか?

1
Saahil Sinha

ここでの待ち時間は大きな問題です。これは、Webサーバーがリクエストを受信して​​からHTMLページを生成するのにかかる時間です。長い待機時間は、通常、サーバーがページを作成するために多くの処理を行う必要があるためです。たとえば、データベースまたは外部Webサービスから情報を取得します。

編集:遅延がプラグインに起因するのか、ホスティング会社に起因するのかを調べる必要があります。警察の探偵の帽子をかぶって調査する必要があります:)まず、非常に基本的なページを作成し、ロードするタイミングを取ります。次に、プラグインを追加し、何がそんなに時間がかかっているかがわかるまで、一度に1つずつ機能をオンにします。プラグインが有効になっていない非常にシンプルなページが長すぎる場合は、Webホスティング会社を変更する必要があります。最新のブラウザで開発者ツール(F12キーを押す)を使用して、[ネットワーク]タブに表示される読み込み時間を取得できます。これは、検査する必要がある各ページの最初のリクエストの待機時間です。

「Ask A Question Forum」セクションは、ページが要求されるたびにどこかからデータをプルし、これが遅延の原因であると推測しています。その場合、これにかかる時間を最適化する方法を見つけるか、何らかのキャッシュ戦略を使用する必要があります。個人的には、サーバーに5分間隔でバックグラウンドで必要なデータを取得させ、メモリに保存します。その後、サーバーがページを生成する必要がある場合、メモリからのデータを含めることができます。これは非常に高速です。フォーラムが更新されるたびにサーバーにこのキャッシュされたデータを更新させて、ほぼ即座に利用できるようにすることができます。

データベースを呼び出す場合は、使用するクエリの最適化にも時間を費やすことになります。適切なインデックス付けにより、速度が大幅に異なる可能性があります。また、データベースがWebサーバーとは異なる場所にある場合、2つの間でデータを送受信する際に余分な遅延が発生します。これにより、本当に必要なときにのみデータベースから読み取ることがさらに重要になります。また、必要なデータのみをフェッチします。すべてのレコードとそのレコードのすべての列を戻さないようにしてください。クエリ結果には、必要な最小限の情報のみが含まれている必要があります。

2
Geezer68