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
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
Route cache
Dans Laravel, le routage nécessite également une surcharge coûteuse. Cachez le fichier routes.php avec :
php artisan route:cache
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
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
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
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
要更改 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教程栏目进行学习!
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds











Laravel est un cadre PHP pour la création facile des applications Web. Il fournit une gamme de fonctionnalités puissantes, notamment: Installation: Installez le Laravel CLI globalement avec Composer et créez des applications dans le répertoire du projet. Routage: définissez la relation entre l'URL et le gestionnaire dans Routes / web.php. Voir: Créez une vue dans les ressources / vues pour rendre l'interface de l'application. Intégration de la base de données: fournit une intégration prête à l'emploi avec des bases de données telles que MySQL et utilise la migration pour créer et modifier des tables. Modèle et contrôleur: le modèle représente l'entité de la base de données et le contrôleur traite les demandes HTTP.

Lorsque vous développez des sites Web à l'aide de CRAFTCMS, vous rencontrez souvent des problèmes de mise en cache de fichiers de ressources, en particulier lorsque vous mettez fréquemment à mettre à jour les fichiers CSS et JavaScript, les anciennes versions des fichiers peuvent toujours être mises en cache par le navigateur, ce qui fait que les utilisateurs ne voient pas les derniers changements de temps. Ce problème affecte non seulement l'expérience utilisateur, mais augmente également la difficulté du développement et du débogage. Récemment, j'ai rencontré des problèmes similaires dans mon projet, et après une exploration, j'ai trouvé le plugin wiejeben / artist-laravel-mix, qui a parfaitement résolu mon problème de mise en cache.

Vous voulez apprendre le cadre de Laravel, mais ne souffrez pas de ressources ni de pression économique? Cet article vous fournit un apprentissage gratuit de Laravel, vous apprenant à utiliser des ressources telles que les plateformes en ligne, les documents et les forums communautaires pour jeter une base solide pour votre parcours de développement PHP de la mise en place de maîtrise.

Résumé de l'article: Cet article fournit des instructions détaillées étape par étape pour guider les lecteurs sur la façon d'installer facilement le cadre Laravel. Laravel est un puissant cadre PHP qui accélère le processus de développement des applications Web. Ce didacticiel couvre le processus d'installation des exigences du système à la configuration des bases de données et à la configuration du routage. En suivant ces étapes, les lecteurs peuvent jeter rapidement et efficacement une base solide pour leur projet Laravel.

Dans le Guide de sélection de la version Laravel Framework pour les débutants, cet article plonge dans les différences de version de Laravel, conçues pour aider les débutants à faire des choix éclairés parmi de nombreuses versions. Nous nous concentrerons sur les principales caractéristiques de chaque version, comparerons leurs avantages et leurs inconvénients, et fournirons des conseils utiles pour aider les débutants à choisir la version la plus appropriée de Laravel en fonction de leur niveau de compétence et de leurs exigences de projet. Pour les débutants, le choix d'une version appropriée de Laravel est crucial car il peut avoir un impact significatif sur leur courbe d'apprentissage et leur expérience de développement globale.

Laravel fournit un cadre Auth complet pour implémenter les fonctions de connexion des utilisateurs, notamment: définir des modèles d'utilisateurs (modèle éloquent), créant des formulaires de connexion (moteur de modèle de lame), rédaction des contrôleurs de connexion (héritage de l'authentification \ loginContrôleur), vérifiant les demandes de connexion (Auth :: tentative) Redirection après la connexion de la connexion, la limitation de la sécurité). De plus, le cadre Auth fournit également des fonctions telles que la réinitialisation des mots de passe, l'enregistrement et la vérification des e-mails. Pour plus de détails, veuillez consulter la documentation de Laravel: https://laravel.com/doc

Le Framework Laravel a des méthodes intégrées pour afficher facilement son numéro de version pour répondre aux différents besoins des développeurs. Cet article explorera ces méthodes, y compris l'utilisation de l'outil de ligne de commande Composer, l'accès à des fichiers .env ou l'obtention d'informations de version via le code PHP. Ces méthodes sont essentielles pour maintenir et gérer le versioning d'applications Laravel.

Laravel et ThinkPHP sont tous deux des cadres PHP populaires et ont leurs propres avantages et inconvénients dans le développement. Cet article comparera les deux en profondeur, mettant en évidence leur architecture, leurs fonctionnalités et leurs différences de performances pour aider les développeurs à faire des choix éclairés en fonction de leurs besoins spécifiques de projet.
