Laravelアプリケーションのパフォーマンスを向上させる
Laravel を開発に使用することは、効率的で楽しい経験です。
アプリケーションをデプロイする準備ができたときに、アプリケーションが実際の環境では適切に動作しない可能性があることに気づくことがよくあります。
理解する必要があるのは、特効薬はないということです。アプリの細部に至るまですべての最適化を適切に行おうとすると、速度が遅くなる可能性がありますが、これらのヒントを使用すれば、適切な最適化が可能になります。
キャッシュ設定ファイル
Laravel の設定項目は数十の設定ファイルに分散されており、各リクエストで各ファイル 含む
をインポートするのにパフォーマンスが消費されます。すべての構成ファイルを 1 つにマージするには、次のコマンドを使用できます。
php artisan config:cache
構成ファイルを変更しても、既存の構成ファイル キャッシュには影響しないことに注意してください。キャッシュを更新するには、上記のコマンドを繰り返します。キャッシュを完全にクリアしたい場合は、次を実行します:
php artisan config:clear
Route Cache
laravel では、ルーティングにも高価なオーバーヘッドが必要です。
php artisan route:cache
を使用して、routes.php ファイルをキャッシュします。クロージャでは機能しないことに注意してください。クロージャを使用している場合は、クロージャをコントローラに移動する良い機会です。これは、正しいコントローラ メソッドではなくクロージャにバインドされたパスをコンパイルしようとすると、artisan コマンドが例外をスローするためです。
キャッシュの設定と同様に、routes.php を変更しても影響はありません。キャッシュを更新するには、パス ファイルを変更するたびに上記のコマンドを実行します。ルーティング キャッシュを完全に削除するには、次のコマンドを実行します。
php artisan route:clear
クラス マップ読み込みの最適化
中規模のプロジェクトでは、数百の PHP ソース ファイルが存在するのが通常です。プログラミングの習慣に従ってコードを分割し、各 PHP ファイルには独自の責任があります。もちろん、これには欠点がないわけではなく、Laravel はリクエストごとにこれらの数百のファイルをロードする必要があり、これは非常にパフォーマンスを消費します。
したがって、より良い方法は、ユーザーがリクエストするたびにどのファイルをロードする必要があるかを宣言し(サービスプロバイダー、ミドルウェアなど)、毎回ロードする必要があるこれらのファイルを記述することです。同じファイル内で、インクルード ファイルの数を減らします。
これは、JavaScript がファイルを差分なく 1 つにマージするのと似ており (webpack、gulp)、ブラウザーとサーバーのリクエストを削減します。
他のソース ファイルを追加する必要がある場合は、config/compile.php のファイル キーで宣言できます。
リクエストごとにロードする必要があるファイルを設定すると、それらは同じファイルに書き込まれるため、ファイルのロードによるパフォーマンスの消費が削減されます。
php artisan optimize --force
コンポーザーの自動ロードを最適化します
これは、laravel だけでなく、composer を使用するすべてのアプリケーションに当てはまります。
まず、PSR-4 オートローダーがどのように機能するかを説明し、次にそれを最適化するために実行する必要があるコマンドを示します。 Composer がどのように機能するかを理解することに興味がない場合は、コンソール コマンドに関する段落に直接スキップすることをお勧めします。
compsoser から App\Controllers\AuthController クラスをリクエストすると、最初にクラス マップで直接の関連付けが検索されます。 classmap は、クラスとファイルの 1 対 1 の連想配列です。もちろん、Login クラスとその関連ファイルをクラス マップに手動で追加していないため、composer はネームスペース内での検索を続けます。
App は Laravel にデフォルトで付属する PSR-4 名前空間であり、app/ フォルダーに関連付けられているため、composer は PSR-4 クラス名の変換を試行します。基本的な文字列操作手順を使用してファイル名を変換します。最後に、App\Controllers\AuthController は、Controllers/ フォルダーにある AuthController.php ファイル内にある必要があると推測します。これは、偶然にも、これはたまたま名前空間フォルダー、つまり app/ にあります。
このすべての大変な作業は、app/Controllers/AuthController.php ファイルに存在する App\Controllers\AuthController クラスを取得するためだけに行われます。 Composer がアプリケーション全体をスキャンし、クラスとファイルの直接 1 対 1 の関連付けを作成するには、次のコマンドを実行します。
composer dumpautoload -o
すでに php 職人の最適化を実行している場合は、覚えておいてください。 -force の場合、この関数を再度実行する必要はありません。これは、optimize コマンドがすでに Composer に最適化されたオートローダーを作成するように指示しているためです。
JIT コンパイラ (ジャストインタイム コンパイラ)
PHP はコンピュータによって自然に理解されるわけではありません。これをバイトコードにコンパイルしてコンピュータで実行させることはできません。 PHP は、PHP ファイルを解釈して対応する C ルーチンを実行する Zend エンジンなどの仲介手段を経由する必要があります。ご想像のとおり、遅いです。サーバーが PHP ファイルを実行するたびに、それをトークンに変換する必要があります。このプロセスは AST パーサーによって実行され、解釈されます。残念ながら、たとえ毎回同じ結果が得られるとしても、パーサーは毎回 PHP ファイルをコンパイルする必要があります。
アプリケーションを高速化するには、一度コンパイルして永久に実行するアプローチが必要です。これを行うのが JIT コンパイラーです。
对于 Laravel 所推荐使用的 JIT 编译器是 HHVM,由 Facebook 创立并广泛使用。Wikipedia、Etsy 和其他上千项目也在使用它。
使用更快的缓存和会话驱动
将 session 保存在文件中是种足够快速而又优雅的方法,自 PHP 开始的时代就在这样做了。但是如果你追求性能,那么文件系统就是你需要注意的一件事,因为它很慢。一种更好的做法是将 cache 和 session 存储在内存中,因为它提供了一种高效读写数据的方式。幸运的是,laravel 支持一些基于内存的 cache 和 session 驱动。
我的建议是使用 memcached 作为 cache 和 session 的驱动,但你可以选择任何你喜欢的,只要它是基于内存工作的。
要更改 session 驱动,需要检查以下文件中「driver」项:
app/config/session.php
要更改 cache 驱动,需要检查以下文件中「driver」项:
app/config/cache.php
不要低估通过优化查询语句带来的查询速度的提升
就像你看到的,大部分优化都是在不同的层面使用缓存。但当面临数据库优化时,你不应该依赖缓存。缓存应是优化查询的最后手段。
缓存查询结果
MySQL 不会替你做这件事,也不如你自己做的好。当然了你肯定不会把应用中每个查询的结果都做缓存,看看数据统计,在应用程序中那些高频率的查询语句,它们真的有必要被频繁地执行?每 15 分钟运行一次然后把相同的结果提供给用户
不是更好吗?
在查询构造器中移除了 removing
方法是件好事(它曾经是个很好的功能,但不够好 - 人们似乎高估了它的作用)。然后你可以更多地使用 Cache::remember
方法,就像这样:
$posts = Cache::remember('index.posts', 30, function() { return Post::with('comments', 'tags', 'author', 'seo')->whereHidden(0)->get(); });
更多Laravel相关技术文章,请访问Laravel教程栏目进行学习!
以上がLaravelアプリケーションのパフォーマンスを向上させるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Laravelは、Webアプリケーションを簡単に構築するためのPHPフレームワークです。次のような強力な機能を提供します。インストール:Laravel CLIを作曲家にグローバルにインストールし、プロジェクトディレクトリにアプリケーションを作成します。ルーティング:ルート/web.phpのURLとハンドラーの関係を定義します。ビュー:リソース/ビューでビューを作成して、アプリケーションのインターフェイスをレンダリングします。データベース統合:MySQLなどのデータベースとのすぐ外側の統合を提供し、移行を使用してテーブルを作成および変更します。モデルとコントローラー:モデルはデータベースエンティティを表し、コントローラーはHTTP要求を処理します。

CraftCMSを使用してWebサイトを開発する場合、特にCSSやJavaScriptファイルを頻繁に更新する場合、リソースファイルのキャッシュ問題が発生することがよくあります。古いバージョンのファイルがブラウザによってキャッシュされ、ユーザーが最新の変更を表示しないようにすることがあります。この問題は、ユーザーエクスペリエンスに影響を与えるだけでなく、開発とデバッグの難しさを高めます。最近、プロジェクトで同様のトラブルに遭遇し、いくつかの調査の後、プラグインWiejeben/Craft-Laravel-Mixが見つかりました。

Laravelフレームワークを学びたいが、資源や経済的圧力に苦しんでいないのですか?この記事では、Laravelの無料学習を提供し、オンラインプラットフォーム、ドキュメント、コミュニティフォーラムなどのリソースを使用して、PHP開発の旅から習得するための堅実な基盤を築く方法を教えてくれます。

Laravelは、ユーザーモデル(Eloquentモデル)の定義、ログインフォームの作成(ブレードテンプレートエンジン)、ログインコントローラーの作成(認証\ログインコントローラーの継承)、ログイン要求の検証(Auth ::試行)の検証など、ユーザーログイン機能を実装するための包括的なAuthフレームワークを提供します。ヘッダー。さらに、AUTHフレームワークは、パスワードのリセット、電子メールの登録と検証などの機能も提供します。詳細については、Laravelのドキュメントを参照してください:https://laravel.com/doc

記事の概要:この記事では、Laravelフレームワークを簡単にインストールする方法について読者をガイドするための詳細なステップバイステップの指示を提供します。 Laravelは、Webアプリケーションの開発プロセスを高速化する強力なPHPフレームワークです。このチュートリアルは、システム要件からデータベースの構成とルーティングの設定までのインストールプロセスをカバーしています。これらの手順に従うことにより、読者はLaravelプロジェクトのための強固な基盤を迅速かつ効率的に築くことができます。

初心者向けのLaravel Frameworkバージョンの選択ガイドでは、この記事は、多くのバージョンの中で初心者が情報に基づいた選択を行うのを支援するように設計されたLaravelのバージョンの違いに分かれています。各リリースの主要な機能に焦点を当て、長所と短所を比較し、初心者がスキルレベルとプロジェクトの要件に基づいてLaravelの最も適切なバージョンを選択できるように便利なアドバイスを提供します。初心者の場合、Laravelの適切なバージョンを選択することは、学習曲線と全体的な開発経験に大きな影響を与える可能性があるため、重要です。

Laravelフレームワークには、開発者のさまざまなニーズを満たすためにバージョン番号を簡単に表示するための組み込みの方法があります。この記事では、Composer Command Lineツールの使用、.ENVファイルへのアクセス、PHPコードを介したバージョン情報の取得など、これらの方法について説明します。これらの方法は、Laravelアプリケーションのバージョン化の維持と管理に不可欠です。

LaravelとThinkPhpはどちらも人気のあるPHPフレームワークであり、開発における独自の利点と短所を持っています。この記事では、2つの深さを比較し、アーキテクチャ、機能、パフォーマンスの違いを強調して、開発者が特定のプロジェクトのニーズに基づいて情報に基づいた選択を行うのに役立ちます。
