0

最初の読み込みが遅い Web サイトをどのように診断しますか? つまり、最大 10 秒間応答がなく、その後すぐにロードされます。

ここで読み込みチャートを確認できます: http://www.webpagetest.org/result/130128_XV_GVN/3/details/

「何か」が速度を落としていることは知っていますが、何が原因かわかりません。遅延の原因を知る方法はありますか?

編集: Joomla のデバッグ モードの値は次のとおりです。

Application 0.013 seconds (+0.013); 1.33 MB (+1.327) - afterLoad
Application 0.783 seconds (+0.770); 9.53 MB (+8.199) - afterInitialise
Application 0.952 seconds (+0.169); 11.00 MB (+1.473) - afterRoute
Application 1.164 seconds (+0.212); 12.76 MB (+1.758) - afterDispatch
Application 2.453 seconds (+1.289); 19.04 MB (+6.287) - beforeRenderModule mod_roknavmenu ()
Application 2.858 seconds (+0.405); 20.91 MB (+1.865) - afterRenderModule mod_roknavmenu ()
Application 2.977 seconds (+0.119); 20.98 MB (+0.075) - beforeRenderModule mod_login (Member Access)
Application 3.012 seconds (+0.035); 21.09 MB (+0.102) - afterRenderModule mod_login (Member Access)
Application 3.019 seconds (+0.008); 21.09 MB (-0.000) - beforeRenderModule mod_hot_joomla_carousel (Front Page Carousel)
Application 3.033 seconds (+0.014); 21.13 MB (+0.040) - afterRenderModule mod_hot_joomla_carousel (Front Page Carousel)
Application 3.057 seconds (+0.024); 21.12 MB (-0.010) - beforeRenderModule mod_rokgallery (FP RokGallery)
Application 3.793 seconds (+0.736); 29.68 MB (+8.570) - afterRenderModule mod_rokgallery (FP RokGallery)
Application 3.847 seconds (+0.053); 29.64 MB (-0.048) - afterRender
4

4 に答える 4

2

Rok モジュールとプラグインを無効にしてみてください。それが何かを変えるかどうかを確認してください。memcached キャッシングを使用している場合は、それを無効にするか、最終的にファイルに変更してみてください。ディスクの速度が遅い場合でも、ファイル キャッシュを使用するとサイトを改善できます。Memcached は、予想とは逆の結果をもたらすことがあります。

また、問題が使用している CloudFlare サービスに関連しているかどうかを調べてみてください。バックエンド ホスティングに直接アクセスするサブドメインを作成し、応答時間が異なるかどうかを確認してください。

何も役に立たず、Joomla のデバッグ出力に問題が見られない場合は、サーバー側のデバッグの時間です。Linuxホスティングを使用していると思います。DNS 解決がサーバーで適切に機能するかどうかを調べます。ping、dig、または host を使用して、IP アドレスのドメイン名を照会するだけです。名前解決の一時停止が見られる場合は、まずリゾルバーを修正してください。

CGI を使用して php を実行している場合は、php プロセスを追跡してみ、何かで一時停止するかどうかを調べることができます。おそらくdbへの接続を待っていますか?もう 1 つの方法は、xdebug php モジュールを使用して関数のトレースを行うことです。php を CGI またはサーバーモジュールとして実行する場合は、xdebug を使用できます。

于 2013-01-31T07:54:55.747 に答える
0

フレームワークに基づくテンプレートは通常遅いという上記のコメントに同意します.

通常、非常に長い時間は、キャッシュが適切に構成されていない、および/または最適化されていないホームページ上の多くのモジュール、および/または膨大な数の記事があることを意味します. これらすべてに対する解決策はありますが、主な問題を特定できるように、いくつかのテストを行ってください。

現在のサイトを中断せずに再生できるように、非ライブ コピーで作業するのが最善です。

  1. サイトを (グローバル構成から) デバッグ モードにして、ホームページをリロードします。ページの下に読み込み時間の表が表示されます。彼らを助けろ。
  2. 別のテンプレートを割り当て、適切なモジュール位置を作成して、現在のホームと同じコンテンツをロードします。ロードにかかった時間を節約
  3. キャッシュ プラグインが有効になっていること、およびキャッシュが適切なタイミングで構成内で有効になっていることを確認してください*。キャッシュをクリアしてから、時間指定されたページの読み込みを行い (時間を保存)、すぐにページをリロードします。2 つの時間を比較することで、どちらが問題のある拡張機能または問題であるかがわかります。

これはいくつかの基本的な診断にすぎません。投稿していただければ、もう少し先に進むことができます。

  • 適切なキャッシュのタイミング: 1 時間あたり 2 ヒットを取得し、キャッシュがデフォルトの 15 分に設定されている場合、キャッシュはまったく使用されていません!!! 1 時間あたり 400 ヒットを取得している場合、キャッシュの生成に使用されるのは 4 つだけです。つまり、リクエストの 1% が遅くなります。ヒット数が少ないほど、有効にするにはキャッシュ時間を長くする必要があります。
于 2013-01-29T08:15:50.283 に答える
-1

あなたの問題は TTFB (最初のバイトまでの時間) の問題のように聞こえます。おそらく、重い DB クエリ、遅いホスト パフォーマンス、重いページ レンダリングに直接関連している可能性があり、これらすべてがサーバーからの長い応答時間につながります。

上記のコメントに同意します。まず、ローカルにインストールされたサーバー (ここでは WAMP サーバーを使用) でパフォーマンスを確認します。また、joomla フレームワークを少しハックして、コンポーネントとプラグインのレンダリングから追加情報を追加することで、デバッグの機能を強化することもできます。

コンポーネントをデバッグするには、ファイル libraries/joomla/application/component/helper.php を編集して置き換える必要があります

$contents = self::executeComponent($path);

if (constant('JDEBUG')) {
JProfiler::getInstance('Application')->mark('beforeExecuteComponent ' . $option.' ('.$task.')');
}
$contents = self::executeComponent($path);
if (constant('JDEBUG')) {
JProfiler::getInstance('Application')->mark('afterExecuteComponent ' . $option.' ('.$task.')');
}

プラグインの場合、libraries/joomla/event/dispacher.php を編集して置き換えます

if (is_object($this->_observers[$key]))
{
$args['event'] = $event;
$value = $this->_observers[$key]->update($args);
}
// Fire the event for a function based observer.
elseif (is_array($this->_observers[$key]))
{
$value = call_user_func_array($this->_observers[$key]['handler'], $args);
}

これとともに:

if (constant('JDEBUG'))
{
$pluginName = '';
if (is_object($this->_observers[$key])) {
$pluginName = get_class($this->_observers[$key]);
}
JProfiler::getInstance('Application')->mark('Execute Plugin ' . $pluginName.'::'.$event.' - START');
}
// Fire the event for an object based observer.
if (is_object($this->_observers[$key]))
{
$args['event'] = $event;
$value = $this->_observers[$key]->update($args);
}
// Fire the event for a function based observer.
elseif (is_array($this->_observers[$key]))
{
$value = call_user_func_array($this->_observers[$key]['handler'], $args);
}
if (constant('JDEBUG'))
{
JProfiler::getInstance('Application')->mark('Execute Plugin ' . $pluginName.'::'.$event.' - END');
}

これで、プラグイン、モジュールがロードされる順序、および各ロードにかかる時間を調べることができます。

于 2014-10-16T08:06:50.963 に答える