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.
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
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
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
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é.
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!