Maison  >  Article  >  cadre php  >  Comment optimiser les performances dans Laravel8 ? Partage de conseils d'optimisation

Comment optimiser les performances dans Laravel8 ? Partage de conseils d'optimisation

青灯夜游
青灯夜游avant
2022-10-08 18:23:432088parcourir

Comment optimiser les performances dans Laravel8 ? Partage de conseils d'optimisation

Ce guide répertorie divers conseils d'optimisation des performances, allant des optimisations rapides au réglage en profondeur, qui peuvent aider à créer des applications Laravel hautes performances.

De nombreux étudiants sur Enlightn nous ont aidé à rédiger ce guide. Si vous recherchez des outils de performance ou de sécurité d'automatisation Laravel, vous souhaiterez peut-être visiter ce site Web.

Pourquoi améliorer les performances ?

Il ne fait aucun doute que les utilisateurs préfèrent les applications plus rapides que les applications à chargement lent.

Selon une étude de Google, 53% des utilisateurs d'appareils mobiles perdront (choisiront de quitter) si un site Web met plus de 3 secondes à se charger. Et le temps de chargement moyen d’un site Web mobile est d’environ 15 secondes. C'est pourquoi la performance est importante !

Chaque seconde supplémentaire nécessaire au chargement de votre application, plus votre taux de conversion client sera bas. Heureusement, pour les applications Laravel, ce n’est pas un problème difficile à résoudre.

1. Utilisez les capacités de performances intégrées pour gagner rapidement

Laravel possède des fonctionnalités intégrées d'amélioration des performances qui peuvent être utilisées avec une configuration simple.

L'amélioration des performances la plus critique est le route cache. Saviez-vous qu'à chaque fois que votre application Laravel est lancée, le middleware est déterminé, les alias sont résolus, les groupes de routes sont résolus, les actions du contrôleur de route sont spécifiées et les paramètres de requête sont traités ?

Vous pouvez utiliser la commande Artisan route:cache pour mettre en cache toutes les informations de routage requises afin d'ignorer le traitement du routage : route:cache 来缓存所有必需的路由信息,从而跳过路由处理:

php artisan route:cache

这条命令可以给你带来 5 倍的性能提升!是最简单也是最有效的优化。

除了路由缓存,Laravel 还提供以下内容:

  • 配置缓存 在每次应用启动时跳过 .envconfig 文件的解析。
  • 视图缓存 预编译你的 Blade 模板视图。
  • 事件缓存 缓存应用程序所有事件和监听器清单。

提示:你应该确保将上述缓存命令添加到部署脚本中,以便每次部署时都重新缓存。否则,路由或配置文件的任何更改都不会在应用中体现。

2. 优化 Composer

Laravel 开发者常犯的一个错误是在生产模式下安装所有依赖项。一些开发包(例如 Ignition)会在内存中记录查询、日志和转储,从而提供带有上下文的友好错误消息,简化调试过程。尽管这在开发中很有用,但会减慢生产环境中应用程序的速度。

在部署脚本中,使用 Composer 安装拓展包的同时请务必使用 -no-dev 选项:

composer install --prefer-dist --no-dev -o

此外,请确保如上所述在生产环境中使用 -o 选项。这可以让 Composer 可以通过生成「classmap」来优化自动加载器。

如果你的应用在运行时没有生成类,你可以选择使用 --classmap-authoritative 选项而不是 -orrreeeCette commande peut vous offrir une amélioration des performances 5x ! C'est l'optimisation la plus simple et la plus efficace.

En plus de la mise en cache des routes, Laravel fournit également les éléments suivants :

Astuce : Vous devez vous assurer d'ajouter la commande de cache ci-dessus à votre script de déploiement afin qu'elle soit remise en cache à chaque déploiement. Sinon, toute modification apportée aux fichiers de routage ou de configuration ne sera pas reflétée dans l'application.

2. Optimiser Composer

Une erreur courante que font les développeurs de Laravel est d'installer toutes les dépendances en mode production. Certains packages de développement, tels que Ignition, enregistrent les requêtes, les journaux et les vidages en mémoire, fournissant des messages d'erreur conviviaux avec contexte et simplifiant le débogage. Bien que cela soit utile en développement, cela peut ralentir votre application en production.

Dans le script de déploiement, lorsque vous utilisez Composer pour installer le package d'extension, assurez-vous d'utiliser l'option -no-dev : rrreeeDe plus, assurez-vous d'utiliser -o dans l'environnement de production comme mentionné ci-dessus option . Cela permet à Composer d'optimiser l'autoloader en générant des "classmaps". Si votre application ne génère pas de classes au moment de l'exécution, vous pouvez choisir d'utiliser l'option --classmap-authoritative au lieu de l'option -o pour une optimisation plus poussée. Assurez-vous de consulter la documentation Composer d'Autoloader

Stratégies d'optimisation

.

🎜🎜3. Choisissez les bons pilotes🎜🎜🎜Le choix des bons pilotes de cache, de file d'attente et de session aura un impact énorme sur les performances de l'application. 🎜🎜Pour la mise en cache dans les environnements de production, des pilotes de cache en mémoire tels que Redis, Memcached ou DynamoDB sont recommandés. Vous pouvez envisager d'utiliser la mise en cache du système de fichiers local pour une configuration sur un seul serveur, même si cela sera plus lent que l'option cache vers mémoire. 🎜🎜Pour les files d'attente, il est recommandé d'utiliser le pilote Redis, SQS ou Beanstalkd. Le pilote de file d'attente de base de données n'est pas adapté aux environnements de production et est connu pour présenter des problèmes de blocage. 🎜🎜Pour les sessions, bases de données, Redis, Memcached ou DynamoDB, le pilote est recommandé. Le pilote de cookie est soumis à des restrictions de taille de fichier et de sécurité et n'est pas recommandé pour les environnements de production. 🎜🎜🎜🎜🎜4. Traitez les tâches fastidieuses dans la file d'attente🎜🎜🎜Lors d'une requête Web typique, certaines tâches spécifiques peuvent prendre beaucoup de temps à accomplir. Laravel dispose d'un 🎜Système de file d'attente🎜 de première classe, qui nous permet de déplacer les tâches chronophages vers des tâches en file d'attente, permettant à votre application de répondre aux demandes extrêmement rapidement. 🎜

En général, des exemples courants de telles tâches incluent l'analyse et le stockage de fichiers CSV, l'interaction avec des API tierces, l'envoi de notifications aux utilisateurs, les requêtes de base de données longues et fastidieuses et les mises à jour de l'index de recherche.

5. Définition des en-têtes de compression HTTP pour les fichiers texte

Les en-têtes de compression peuvent avoir un impact significatif sur les performances des applications. Assurez-vous d'activer la compression ou le CDN sur votre serveur Web pour les fichiers au format texte tels que CSS, JS, XML ou JSON.

Les formats d'image ont déjà des algorithmes de compression implémentés et dans la plupart des cas, les fichiers au format image ont été compressés, et les images ne sont pas des fichiers au format texte (sauf pour le format SVG, qui est un document XML). Par conséquent, le format d’image ne nécessite pas de compression.

Vous pouvez configurer gzip ou brotli (les anciens navigateurs peuvent ne pas prendre en charge brotli) sur votre serveur Web ou CDN pour obtenir une amélioration considérable des performances.

Normalement, la compression peut réduire la taille du fichier d'environ 80 % !

6. Définissez les en-têtes de cache HTTP sur les ressources statiques

La mise en cache peut améliorer les performances de votre application, en particulier pour les ressources statiques telles que les images, les fichiers CSS et JS. Il est recommandé d'activer les en-têtes de contrôle du cache au niveau du serveur Web ou du CDN, le cas échéant. Si vous souhaitez définir ces en-têtes de contrôle sur l'application Larvel au lieu du serveur Web, vous pouvez utiliser le Cache Control Middleware de Larvel.

Le champ d'en-tête Cache garantit que le navigateur ne demande pas de ressources statiques à plusieurs reprises lors de la visite répétée du site Web. Cela améliore l'expérience utilisateur car le site Web se charge plus rapidement lors des visites ultérieures.

Laravel Mix fournit une fonctionnalité Cache Cleaning prête à l'emploi afin que lorsque le code CSS ou JS est modifié, le navigateur ne continue pas à utiliser l'ancien contenu mis en cache.

7. Accélérez les ressources statiques à l'aide des services CDN

Un réseau de diffusion de contenu (CDN) est un groupe de serveurs géographiquement distribué qui fournit des services en utilisant des serveurs plus proches des visiteurs du site Web. Cela permet aux utilisateurs de bénéficier de temps de chargement plus rapides.

En plus de vitesses de chargement plus rapides et de temps de chargement plus courts, CDN présente également d'autres avantages, tels que la réduction de la charge du serveur Web, la protection DDOS et l'analyse des services de ressources statiques, etc.

Certains CDN populaires incluent CloudFlare, AWS CloudFront et Azure CDN. La plupart des CDN ont une certaine limite d'essai gratuit. Pensez à utiliser un CDN pour améliorer les performances de chargement des ressources statiques.

Laravel fournit un composant de support CDN prêt à l'emploi Mix et des fonctions d'assistance asset dans le cadre.

8. Réduire le code JS et CSS

La réduction des scripts supprimera le code supplémentaire de votre application qui n'est pas nécessaire à l'exécution (tel que les commentaires de code, les espaces, les noms de variables raccourcis et d'autres optimisations). Il s'agit d'un moyen courant et efficace de réduire la taille des fichiers JS et CSS dans les environnements de production.

Laravel Mix fournit une fonctionnalité prête à l'emploi de minimiser la sortie pour vos scripts de production

9. Utilisez le cache à bon escient

Laravel a un support caching intégré. La mise en cache est mieux utilisée pour les charges de travail lourdes en lecture. Ces charges de travail impliquent souvent des tâches fastidieuses de récupération ou de traitement de données.

Certains scénarios courants de mise en cache peuvent inclure :

  • Mise en cache des pages statiques : La mise en cache des pages statiques est un jeu d'enfant. Le site Web officiel de Laravel utilise Page Cache pour mettre en cache chaque page de document.
  • Mise en cache de fragments ou de parties : Parfois, il peut être plus utile de mettre en cache un fragment d'une page plutôt que de mettre en cache la page entière. Par exemple, vous souhaiterez peut-être mettre en cache un en-tête de page contenant le nom d'utilisateur et l'avatar de l'utilisateur. Vous pouvez mettre en cache le fragment d'en-tête de page une fois sans avoir à récupérer les données de la base de données à chaque fois.
  • Cache de requêtes : Le cache de requêtes peut être utile si votre application interroge fréquemment la base de données pour des éléments qui changent rarement. Par exemple, lorsque vous gérez un site Web de commerce électronique, vous souhaiterez peut-être mettre en cache les catégories d'articles affichées sur la page d'accueil du centre commercial, plutôt que de lire ces catégories d'articles dans la base de données à chaque fois que vous visitez le centre commercial.

N'oubliez pas que la mise en cache n'est d'aucune utilité pour long tail(éléments rarement demandés). Au contraire, il doit être utilisé avec prudence lors de toute récupération fréquente de données (par rapport aux mises à jour de données).

Assurez-vous également d'invalider ou de vider le cache à chaque fois que le contenu mis en cache change. Par exemple, si vous mettez en cache les en-têtes de profil, actualisez le cache après qu'un utilisateur a mis à jour sa photo de profil.

10. Identifiez les goulots d'étranglement des performances dans votre application

Si certaines de vos pages prennent du temps à se charger ou ont une utilisation élevée de la mémoire, vous devrez peut-être identifier les goulots d'étranglement des performances. Il existe de nombreux outils dans l'écosystème Laravel pour vous aider à le faire, notamment Laravel Telescope, Laravel Debugbar et Clockwork.

Certains goulots d'étranglement courants en matière de performances incluent :

  • Requêtes N+1 : si votre code effectue une requête pour chaque enregistrement, cela entraînera davantage d'allers-retours sur le réseau et davantage de requêtes. Cela fonctionne dans Laravel en utilisant le Préchargement des données.
  • Demandes en double : Si votre code exécute la même requête plusieurs fois tout en traitant la même requête, cela peut ralentir votre application. En règle générale, si plusieurs services ou classes nécessitent le même ensemble de données, ces problèmes peuvent être résolus en extrayant les calculs ou les récupérations de données dans des classes distinctes.
  • Utilisation élevée de la mémoire : Afin de réduire l'utilisation de la mémoire de votre application, vous pouvez envisager d'utiliser les Collections paresseuses et le Query chunking pour réduire le volume de données traitées en une seule fois. Pour stocker des fichiers, utilisez le Diffusion automatique pour réduire l'utilisation de la mémoire.
  • Requêtes lentes : si une requête prend trop de temps à s'exécuter, vous devez envisager d'utiliser le cache de requêtes et/ou d'utiliser l'instruction EXPLAIN pour optimiser le plan d'exécution de la requête.

Si vous ne parvenez pas à identifier les goulots d'étranglement des performances de votre application à l'aide des outils de débogage ci-dessus, vous pouvez envisager d'utiliser des outils d'analyse tels que XDebug ou Blackfire.

Liste de contrôle en ligne

De plus, voici une liste de contrôle en ligne complète pour référence 41 Résumé du cours | "Introduction à l'optimisation des performances LX3 Laravel".

Résumé

L'optimisation des performances est un sujet éternel, mais Laravel possède plusieurs composants intégrés tels que Mix, les files d'attente et le cache, qui rendent l'optimisation des performances facile ! Nous espérons que vous avez appris quelque chose de nouveau sur l’amélioration des performances des applications.

Adresse originale : https://laravel-news.com/performance-checklist

Adresse traduite : https://learnku.com/laravel/t/55702

[Recommandations associées : tutoriel vidéo 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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer