私の Laravel アプリの TTFB が本番環境で 3 秒以上になるのはなぜですか?

私の Laravel アプリの TTFB が本番環境で 3 秒以上になるのはなぜですか?

いろいろ調べてみましたが、画像などが TTFB に影響するかどうかについての明確な答えが見つかりません。これが、本番環境でサイトの読み込みに時間がかかる理由として最も可能性が高いと推測されます。ページの受信が完全に完了すると、転送されていることがわかります。これは40.7 mb resourcesかなり大きいですが、最初のページの読み込みはそのうち 20.1kb に過ぎず、その後に画像/js/css が続きます。

ネットワーク インスペクタからエクスポートされた .har ファイル:

"pages": [
  {
    "startedDateTime": "2022-04-01T23:10:26.010Z",
    "id": "page_1",
    "title": "https://example.com/",
    "pageTimings": {
      "onContentLoad": 5878.881000004185,
      "onLoad": 6390.734000000521
    }
  }
],

その後にimages/js/cssなどが続きます。

試したこと:

  • index.php の内容を単純な echo ステートメントに置き換えると<?php echo 'foobar'; ?>、ページの読み込みに 1 秒もかからず、問題がすぐに解決されました。
  • 同じサーバー上でホストされている他のアプリケーションと同じキャッシュ構成になっており、読み込み時間も大幅に短縮されていることを確認しました。
  • composer install --optimize-autoloader --no-dev
  • composer dump-autoload -o
  • php artisan route:cache
  • php artisan config:cache

私の質問は、画像/CSS/JS などのリソースには独自の TTFB がありますが、最初のページの最初のバイトまでの時間が長くなる可能性があるということです。

編集:私が指摘したいもう一つのことは、これはリソースをあまり消費しないページで発生し、また、そのサーバーがMicrosoft Windows Server 2016 標準そしてVMware, Inc. VMware7.1

答え1

私の Laravel アプリの TTFB が本番環境で 3 秒以上になるのはなぜですか?

コードをプロファイルします。xデバッグそれからパイプするIDEまたはKCacheGrind/QCacheGrindコードに何が負担をかけているのかを確認します。

画像/CSS/JS などのリソースには独自の TTFB がありますが、最初のページの最初のバイトまでの時間が長くなる可能性がありますか?

単独では機能しません。サーバーの負荷と構成によって異なります。

もう一度、まずコードのプロファイリングを試してください。できれば本番環境では行わないでください。

関連情報