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 サイトの他の関連記事を参照してください。

LARAVEL10INTRODUCESSERALKEYFEATURESTENHANCEWEBDEVELOPMENT.1)LAZYCOLLECTIONSSALLECTIONSSALLOWECTIONSALLOWESPICIENTPROCESSINGOFLAREDATASETSWITHOUTLECORDSINTOMEMORY.2)The'Make:Model and-Migration'ArtisAncommandSimplifiesingModElsandmigrations.3)Integration

はい、laravelmigrationsworthusing.itsimplifiesdatabaseschemamamanagement、entancescollaboration、およびprovidesversioncontrol.useitfortructured、efficientdevelopment。

softdeletesinlaravelimpactperformancebycomplicating complicating andincreasingstorageneeds.tomitigatetheseissues:1)indexthedeleted_atcolumntospeedupqueries、2)useegerloadingtoreducequerycount、and3)remulationcleanupsoftedededtomentaindatabaseefiefie

laravelMigrationSareBenefisialForversionControl、Collaboration、およびProMotingGoodDevelopmentPractices.1)TheyThealOwTrackingBackDatabaseChanges.2)MigrationSensureTeamMembers'schemasStaysized.3)

Laravelのソフト削除機能は、実際の削除ではなくレコードをマークすることによりデータを保護します。 1)softdeletestraitを追加し、フィールドをモデルに削除します。 2)delete()メソッドを使用して、delete()メソッドを使用してdeleteをマークし、復元します。 3)withtrashed()またはonlytrashed()を使用して、クエリ時にソフト削除レコードを含めます。 4)パフォーマンスを最適化するために一定期間を超えたソフト削除レコードを定期的に削除します。

laravelMigrationSareversionControlfordatabaseChemas、avainwedReproducible andReversiblechanges.tousethem:1)createamigration with'phpartisanmake:migration '、2)defineschemachangesinthe'up()' methodandrealin'dod()

laravelMigrationsmayfailtorollbackduetodategrityissues、foreignkeyconstraints、orirReversiblecoctions.1)datagegrityissuescurifigriverigrignigrationaddsdatatatcan'tcan'tcan、likecolumnwithadeadefaultvalue.2)foreientkeycostriantsscanpretrolllolllolllolllolllolllolllollblacksifrelatio


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン
