ホームページ  >  記事  >  PHPフレームワーク  >  Laravel8でパフォーマンスを最適化するにはどうすればよいですか?最適化のヒントの共有

Laravel8でパフォーマンスを最適化するにはどうすればよいですか?最適化のヒントの共有

青灯夜游
青灯夜游転載
2022-10-08 18:23:431895ブラウズ

Laravel8でパフォーマンスを最適化するにはどうすればよいですか?最適化のヒントの共有

このガイドでは、簡単な最適化から詳細なチューニングまで、高パフォーマンスの Laravel アプリケーションの構築に役立つさまざまなパフォーマンス最適化のヒントをリストします。

Enlightn には、このガイドの作成に協力してくれた多くの学生がいます。 Laravel の自動化パフォーマンスやセキュリティ ツールをお探しの場合は、この Web サイトにアクセスしてください。

なぜパフォーマンスが向上するのですか?

ユーザーが遅いアプリよりも速いアプリを好むのは間違いありません。

Google の調査によると、Web サイトの読み込みに 3 秒以上かかると、モバイル端末のユーザーの 53% が離脱する (離脱を選択する) ことになります。また、モバイル Web サイトの平均読み込み時間は約 15 秒です。だからこそパフォーマンスが重要なのです!

アプリの読み込みにかかる時間が 1 秒増えるごとに、顧客のコンバージョン率は低下します。幸いなことに、Laravel アプリケーションの場合、これは解決するのが難しい問題ではありません。

1. 組み込みのパフォーマンス機能を使用してすぐに勝つ

Laravel には、組み込みのパフォーマンス向上機能がいくつかあり、シンプルな構成。

最も重要なパフォーマンスの向上は、

ルート キャッシュです。 Laravel アプリケーションが起動されるたびに、ミドルウェアが決定され、エイリアスが解決され、ルート グループが解決され、ルート コントローラーのアクションが指定され、リクエスト パラメーターが処理されることをご存知ですか?

アーティザン コマンド

route:cache を使用して、必要なすべてのルーティング情報をキャッシュし、ルート処理をスキップできます。

php artisan route:cache
このコマンドにより、パフォーマンスが 5 倍向上します。これは最も単純かつ効果的な最適化です。

ルート キャッシュに加えて、Laravel は次の機能も提供します:

  • 設定キャッシュ .envconfig# をスキップします。 ## ファイルの解析。
  • ビュー キャッシュ
  • Blade テンプレート ビューをプリコンパイルします。
  • イベント キャッシュ
  • アプリケーション内のすべてのイベントとリスナーのリストをキャッシュします。
  • ヒント: デプロイするたびに再キャッシュされるように、デプロイメント スクリプトに上記のキャッシュ コマンドを必ず追加する必要があります。そうしないと、ルーティング ファイルまたは構成ファイルへの変更がアプリに反映されません。

2. Composer の最適化Laravel 開発者がよく犯す間違いは、すべての依存関係を運用モードでインストールすることです。 Ignition などの一部の開発パッケージは、メモリ内にクエリ、ログ、ダンプを記録し、コンテキストを含む分かりやすいエラー メッセージを提供し、デバッグを簡素化します。これは開発では便利ですが、運用環境ではアプリケーションの速度が低下する可能性があります。

展開スクリプトで、Composer を使用して拡張パッケージをインストールする場合は、必ず

-no-dev

オプションを使用してください: <pre class="brush:php;toolbar:false">composer install --prefer-dist --no-dev -o</pre>さらに、次のことを確認してください。実稼働環境では、前述のように、

-o

オプションを使用します。これにより、Composer は「クラスマップ」を生成してオートローダーを最適化できるようになります。 アプリケーションが実行時にクラスを生成しない場合は、さらに最適化するために、

-o

オプションの代わりに --classmap-authoritative オプションを使用することを選択できます。 Autoloader の Composer ドキュメントを必ず確認してください最適化戦略.

3. 適切なドライバーを選択してください

Choose適切なドライバー キャッシュ、キュー、セッション ドライバーは、アプリケーションのパフォーマンスに大きな影響を与える可能性があります。

実稼働環境でのキャッシュの場合は、Redis、Memcached、DynamoDB などのメモリ キャッシュ ドライバーが推奨されます。単一サーバーのセットアップではローカル ファイル システム キャッシュの使用を検討することもできますが、これはメモリへのキャッシュ オプションよりも遅くなります。

キューの場合は、Redis、SQS、または Beanstalkd ドライバーを使用することをお勧めします。データベース キュー ドライバーは運用環境には適しておらず、デッドロックの問題があることが知られています。

セッションの場合、データベース、Redis、Memcached、または DynamoDB ドライバーが推奨されます。 Cookie ドライバーにはファイル サイズとセキュリティ制限があるため、運用環境には推奨されません。

4. 時間のかかるタスクをキュー経由で処理する

典型的な Web リクエスト プロセスでは、キューを必要とする特定のタスクがいくつか存在する場合があります。完了するまでに長い時間がかかります。 Laravel にはファーストクラスのキューシステムがあり、時間のかかるタスクをキューに入れられたタスクに転送できるため、アプリケーションがリクエストに非常に迅速に応答できるようになります。

一般に、このようなタスクの一般的な例には、CSV ファイルの解析と保存、サードパーティ API との対話、ユーザーへの通知の送信、長くて時間のかかるデータベース クエリ、検索インデックスの更新などが含まれます。

5. テキスト ファイルの設定 HTTP 圧縮ヘッダー

圧縮ヘッダーは、アプリケーションのパフォーマンスに大きな影響を与える可能性があります。 CSS、JS、XML、JSON などのテキスト形式ファイルの圧縮または CDN を Web サーバーで有効にしてください。

画像形式にはすでに圧縮アルゴリズムが実装されており、ほとんどの場合、画像形式ファイルは圧縮されており、画像はテキスト形式ファイルではありません (XML ドキュメントである SVG 形式を除く)。したがって、画像形式は圧縮する必要がありません。

Web サーバーまたは CDN に gzip または brotli (古いブラウザは brotli をサポートしていない可能性があります) をセットアップして、パフォーマンスを大幅に向上させることができます。

通常、圧縮するとファイル サイズを約 80% 削減できます。

6. 静的リソースに HTTP キャッシュ ヘッダーを設定する

キャッシュにより、特に画像などの静的リソースの場合、アプリケーションのパフォーマンスが向上します。 、CSS および JS ファイル。該当する場合は、Web サーバーまたは CDN レベルでキャッシュ制御ヘッダーを有効にすることをお勧めします。これらのコントロールヘッダーを Web サーバーではなく Larvel アプリケーションに設定したい場合は、Larvel の キャッシュ コントロール ミドルウェアを使用できます。

Cache ヘッダー フィールドは、Web サイトに複数回アクセスしたときにブラウザが静的リソースを繰り返し要求しないようにします。これにより、次回以降の Web サイトの読み込みが速くなり、ユーザー エクスペリエンスが向上します。

Laravel Mix は、すぐに使用できる キャッシュ クリーニング 機能を提供するため、CSS または JS コードが変更されたときに、ブラウザーが古いキャッシュされたコンテンツを使用し続けることがなくなります。

7. CDN サービスを使用して静的リソースを高速化する

コンテンツ配信ネットワーク (CDN) は、より近いサーバーを使用する地理的に分散されたサーバー グループです。ウェブサイト訪問者に提供されます。これにより、ユーザーは読み込み時間が短縮されます。

CDN には、読み込み速度の高速化と読み込み時間の短縮に加えて、Web サーバーの負荷の軽減、DDOS 保護、静的リソース サービスの分析など、他の利点もあります。

人気のある CDN には、CloudFlare、AWS CloudFront、Azure CDN などがあります。ほとんどの CDN には、一定の無料試用制限があります。静的リソースの読み込みパフォーマンスを向上させるために、CDN の使用を検討してください。

Laravel は、すぐに使える CDN サポートコンポーネント Mix とヘルパー関数 asset をフレームワークに提供します。

8. JS および CSS コードを最小限に抑える

スクリプトを最小限に抑えると、アプリケーション コード (コード コメント、空白、短縮コードなど) から不要なオーバーヘッドが削除されます。変数名、その他の最適化)。これは、運用環境で JS および CSS ファイルのサイズを削減するための一般的で効果的な方法です。

Laravel Mix は、すぐに使用できる 出力最小化機能を本番スクリプトに提供します

9. キャッシュを賢く使用します

##Laravel には

キャッシュ サポートが組み込まれています。キャッシュは、読み取り負荷の高いワークロードに最適です。これらのワークロードには、多くの場合、時間のかかるデータ取得タスクやデータ処理タスクが含まれます。

キャッシュの一般的なシナリオには次のようなものがあります:

  • 静的ページのキャッシュ: 静的ページのキャッシュは簡単です。Laravel の公式 Web サイトでは次のものが使用されますPageキャッシュ 各ドキュメント ページをキャッシュします。
  • フラグメントまたは部分キャッシュ: ページ全体をキャッシュするよりも、ページのフラグメントをキャッシュした方が便利な場合があります。たとえば、ユーザー名とユーザー アバターを含むページ ヘッダーをキャッシュしたい場合があります。毎回データベースからデータをフェッチしなくても、ページ ヘッダー フラグメントを 1 回キャッシュできます。
  • クエリ キャッシュ: クエリ キャッシュは、アプリケーションがめったに変更されない項目についてデータベースに頻繁にクエリを実行する場合に便利です。たとえば、電子商取引 Web サイトを運営している場合、モールを訪問するたびにデータベースからこれらの商品カテゴリを読み取るのではなく、モールのホームページに表示される商品カテゴリをキャッシュしたい場合があります。
キャッシュは

ロングテール (めったに要求されない項目) には役に立たないことに注意してください。逆に、(データ更新と比較して) 頻繁なデータ取得の場合は注意して使用する必要があります。

キャッシュされたコンテンツが変更されるたびに、キャッシュが無効化またはフラッシュされることも確認する必要があります。たとえば、プロファイル ヘッダーをキャッシュしている場合は、ユーザーがプロファイル写真を更新した後にキャッシュを更新します。

10. アプリケーションのパフォーマンスのボトルネックを特定する

一部のページの読み込みに時間がかかったり、メモリ使用量が多くなったりする場合は、次のことが必要になる場合があります。パフォーマンスのボトルネックを特定します。 Laravel エコシステムには、Laravel Telescope、Laravel Debugbar、Clockwork など、これを行うのに役立つツールが多数あります。

一般的なパフォーマンスのボトルネックには、次のものがあります。

  • N 1 クエリ: コードがレコードごとに 1 つのクエリを実行すると、ネットワークのラウンドトリップが増加します。そしてさらに多くのクエリ。これは、Laravel で データのプリロードを使用して行うことができます。
  • 重複リクエスト: 同じリクエストの処理中にコードが同じクエリを複数回実行すると、速度が遅くなる可能性があります。 down アプリケーションの実行速度。通常、複数のサービスまたはクラスが同じデータ セットを必要とする場合、これらの問題は、データの計算または取得を別のクラスに抽出することで解決できます。
  • 高いメモリ使用量: アプリケーションのメモリ使用量を削減するには、Lazy collectionsQuery chunking を使用してメモリ使用量を削減することを検討できます。単一 処理されるデータの量。ファイルを保存するには、自動ストリーミングを使用してメモリ使用量を削減します。
  • 遅いクエリ: クエリの実行に時間がかかりすぎる場合は、クエリ キャッシュの使用を検討するか、EXPLAIN ステートメントを使用してクエリ実行プランを最適化する必要があります。

上記のデバッグ ツールを使用してアプリケーションのパフォーマンスのボトルネックを特定できない場合は、XDebug や Blackfire などの分析ツールの使用を検討してください。

オンライン チェックリスト

さらに、参照用の完全なオンライン チェックリストをここに示します41. コースの概要|《LX3 Laravel パフォーマンスの取得》最適化から始めました》

概要

パフォーマンスの最適化は永遠のテーマですが、Laravel にはミックス、キュー、キャッシュなどの組み込みコンポーネントがいくつかあります。パフォーマンスの最適化が簡単に見えます!アプリケーションのパフォーマンスの向上について新しいことを学んでいただければ幸いです。

元のアドレス: https://laravel-news.com/performance-checklist

翻訳アドレス: https://learnku.com/laravel/t/55702

[関連する推奨事項: laravel ビデオチュートリアル ]

以上がLaravel8でパフォーマンスを最適化するにはどうすればよいですか?最適化のヒントの共有の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はlearnku.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。