Maison > cadre php > Laravel > le corps du texte

Améliorer les performances des applications Laravel

步履不停
Libérer: 2019-06-23 13:53:37
original
3600 Les gens l'ont consulté

Améliorer les performances des applications Laravel

Utiliser Laravel pour le développement est une expérience efficace et agréable.
Souvent, lorsque vous êtes prêt à déployer une application, vous réalisez peut-être que l'application peut ne pas fonctionner correctement dans des environnements réels.

Ce qu’il faut comprendre, c’est qu’il n’y a pas de solution miracle. En essayant d'obtenir toutes les optimisations nécessaires pour chaque détail de votre application, celle-ci peut devenir plus lente, mais en utilisant les conseils ci-dessous, vous obtiendrez ce qu'il vous faut.

Fichier de configuration du cache

Les éléments de configuration de Laravel sont distribués dans des dizaines de fichiers de configuration, et cela consomme des performances pour introduire chaque fichier including dans chaque requête. Afin de fusionner tous les fichiers de configuration en un seul, vous pouvez utiliser :

php artisan config:cache
Copier après la connexion

N'oubliez pas que la modification du fichier de configuration n'affectera pas le cache du fichier de configuration existant. Pour actualiser le cache, répétez la commande ci-dessus. Si vous souhaitez vider complètement le cache, exécutez :

php artisan config:clear
Copier après la connexion

Route cache

Dans Laravel, le routage nécessite également une surcharge coûteuse. Cachez le fichier routes.php avec :

php artisan route:cache
Copier après la connexion

Veuillez noter que cela ne fonctionne pas avec les fermetures. Si vous utilisez des fermetures, c'est une bonne opportunité de les déplacer dans le contrôleur, car la commande artisan lèvera une exception lors de la tentative de compilation du chemin lié à la fermeture au lieu de la méthode de contrôleur correcte.
Comme pour la configuration du cache, toute modification apportée à routes.php n'aura aucun impact. Pour actualiser le cache, exécutez la commande ci-dessus chaque fois que vous modifiez le chemin du fichier. Pour nettoyer complètement le cache de routage, exécutez la commande suivante :

php artisan route:clear
Copier après la connexion

Optimisation du chargement des cartes de classes

Dans un projet de taille moyenne, il est normal d'avoir des centaines de fichiers sources PHP selon le. habitudes de programmation, nous séparerons le code, et chaque fichier php a ses propres responsabilités. Bien sûr, cela n’est pas sans inconvénients. Laravel doit charger ces centaines de fichiers pour chaque requête, ce qui consomme beaucoup de performances.

Par conséquent, une meilleure façon est de déclarer quels fichiers doivent être chargés à chaque fois que l'utilisateur le demande (tels que les fournisseurs de services, les middlewares, etc.), puis d'écrire ces fichiers qui doivent être chargés à chaque fois. Dans le même fichier, réduisez le nombre de fichiers à inclure.

Cela est similaire à javascript fusionnant des fichiers en un seul sans différence (webpack, gulp), ce qui réduira les requêtes du navigateur et du serveur.

Si vous devez ajouter d'autres fichiers sources, vous pouvez les déclarer dans la clé des fichiers de config/compile.php.

Après avoir défini les fichiers qui doivent être chargés pour chaque requête, ils seront écrits dans le même fichier, réduisant ainsi la consommation de performances du chargement des fichiers

php artisan optimize --force
Copier après la connexion

Optimiser le chargement automatique du compositeur

Cela ne s'applique pas seulement à Laravel, mais à toute application utilisant Composer.

Je vais d'abord vous expliquer comment fonctionne le chargeur automatique PSR-4, puis vous montrer quelles commandes vous devez exécuter pour l'optimiser. Si vous ne souhaitez pas comprendre le fonctionnement du compositeur, je vous recommande de passer directement au paragraphe sur les commandes de la console.

Lorsque vous demandez la classe AppControllersAuthController à compsoser, celle-ci recherche d'abord l'association directe dans le plan de classe. classmap est un tableau associatif 1 à 1 de classes et de fichiers. Bien sûr, puisque vous n'avez pas ajouté manuellement la classe Login et ses fichiers associés au mappage de classes, composer continuera à rechercher dans l'espace de noms.

Parce que App est un espace de noms PSR-4 fourni par défaut avec Laravel et associé au dossier app/, donc composer essaiera de convertir la classe PSR-4 noms en noms de fichiers à l’aide de procédures de manipulation de chaînes de base. Enfin, il devine que AppControllersAuthController doit être dans le fichier AuthController.php, qui se trouve dans le dossier Controllers/, qui, par coïncidence, se trouve dans le dossier de l'espace de noms, c'est-à-dire app/.

Tout ce travail acharné juste pour obtenir la classe AppControllersAuthController présente dans le fichier app/Controllers/AuthController.php. Pour que composer analyse l'intégralité de l'application et crée une association directe 1 à 1 de classes et de fichiers, exécutez la commande suivante :

composer dumpautoload -o
Copier après la connexion

N'oubliez pas que si vous avez déjà exécuté php artisan optimise - -force, vous n'aurez alors pas besoin d'exécuter à nouveau cette fonction. Parce que la commande d'optimisation indique déjà à composer de créer un chargeur automatique optimisé.

Compilateur JIT (compilateur juste à temps)

PHP n'est pas naturellement compris par les ordinateurs. Vous ne pouvez pas le compiler en bytecode et laisser l'ordinateur l'exécuter. PHP doit passer par un intermédiaire, comme le moteur Zend, qui interprète le fichier PHP et exécute la routine C correspondante. Comme vous pouvez l'imaginer, c'est lent. Chaque fois que votre serveur exécute un fichier PHP, il doit le convertir en jetons - ce processus est effectué et interprété par l'analyseur AST. Malheureusement, l'analyseur doit compiler le fichier PHP à chaque fois, même s'il obtient le même résultat à chaque fois.

Pour rendre votre application plus rapide, vous avez besoin d'une approche compiler une fois, exécuter à vie, et c'est ce que fait un compilateur JIT.

对于 Laravel 所推荐使用的 JIT 编译器是 HHVM,由 Facebook 创立并广泛使用。Wikipedia、Etsy 和其他上千项目也在使用它。

使用更快的缓存和会话驱动

将 session 保存在文件中是种足够快速而又优雅的方法,自 PHP 开始的时代就在这样做了。但是如果你追求性能,那么文件系统就是你需要注意的一件事,因为它很慢。一种更好的做法是将 cache 和 session 存储在内存中,因为它提供了一种高效读写数据的方式。幸运的是,laravel 支持一些基于内存的 cache 和 session 驱动。

我的建议是使用 memcached 作为 cache 和 session 的驱动,但你可以选择任何你喜欢的,只要它是基于内存工作的。

要更改 session 驱动,需要检查以下文件中「driver」项:

app/config/session.php
Copier après la connexion

要更改 cache 驱动,需要检查以下文件中「driver」项:

app/config/cache.php
Copier après la connexion

不要低估通过优化查询语句带来的查询速度的提升

就像你看到的,大部分优化都是在不同的层面使用缓存。但当面临数据库优化时,你不应该依赖缓存。缓存应是优化查询的最后手段。

缓存查询结果

MySQL 不会替你做这件事,也不如你自己做的好。当然了你肯定不会把应用中每个查询的结果都做缓存,看看数据统计,在应用程序中那些高频率的查询语句,它们真的有必要被频繁地执行?每 15 分钟运行一次然后把相同的结果提供给用户
不是更好吗?

在查询构造器中移除了 removing方法是件好事(它曾经是个很好的功能,但不够好 - 人们似乎高估了它的作用)。然后你可以更多地使用 Cache::remember 方法,就像这样:

$posts = Cache::remember('index.posts', 30, function()
{
    return Post::with('comments', 'tags', 'author', 'seo')->whereHidden(0)->get();
});
Copier après la connexion

更多Laravel相关技术文章,请访问Laravel教程栏目进行学习!

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!