Bonjour,
je viens ici demander quelques conseil Svp.

Dans un live (j'ai oublié lequel), à propos de Laravel 5 Grafickart disais qu'il y avais une solution qui permet de bien améliorer les performances. Il me semble que c'étais un système de mise en cache, mais je ne me rapel pas.

Quelqu'un sait de quoi il parlais?
Et que me conseillez vous pour améliorer les performances d'un site fait avec Laravel 5.1 ?

Merci beaucoup.

11 réponses


Bonsoir,
Il en a fait un tutoriel disponible ici.
Pour précision ça ne fonctionne pas que pour Laravel mais pour php en global ;-)

juste pour l'information le système de views blade utilise le cache par défault

Tu peux/doit aussi utiliser le système de cache intégré à Laravel qui te permet de cacher des objets en tout genre pour des données plus ou moins statique. (ou alors un sur un site à très grosse affluence)

stephweb
Auteur

Ok merci à tous.
J'aime bien Laravel, mais l'inconvéniant (sans système de cache), c'est que c'est 4 à 8 fois moins prformant que du code maison (sans système de cache).
Mais ça reste un frameworks PHP performant par rapport à Symfony 2 ou à d'autre.

Regarde un peu les bench
Je ne veux pas être rabat-joie mais Laravel est toujours bon dernier

Salut.

Effectivement les bench de @Huggy sont clairement au désavantage de pas mal de framework php.

Avant de rentrer dans des questions comme celles que tu pose, il est primordial de bien définir les besoins.
Il existe de multiples façons d'améliorer les performances d'une application.

Quelques questions:
Utilise tu un système de requêtes concurrentes? Stocke tu les sessions en cache? Cela peut sembler etre un détails mais ca soulage bien le file system. Redis est une bonne solution, memcached aussi.
http://laravel.com/docs/5.1/session
Ensuite pense base de donnée. Quelles technologies utilise tu? Quelle est la taille de tes table? Sont elles correctement indéxées?
Ensuite toutes les taches gourmandes doivent etre relayé a des queues: afin de ne pas bloques l'utilisateur:
http://laravel.com/docs/5.1/queues

Deja ces solutions doivent permettre dans pas mal de situations de preserver des performances correctes. Il ne reste alors qua gerer manuellement la mise en cache des ressources couramment servies par l'application.

Espérant t'avoir au mois partiellement répondu.

cavalor.

stephweb
Auteur

Ok merci.
Je n'utilise pas de système de requêtes concurrentes, et non les sessions je ne les met pas en cache. Car en fait j'ai juste créer un CMS avec Laravel, j'ai pas encore fait de site avec. Mais je pense en faire un très bientot.
J'utilise MySQL, et mes tables ont entre 5 et 10 champs.

"J'aime bien Laravel, mais l'inconvéniant (sans système de cache)" ce que vous disez est totalement faux
si vous lisez la documentation en anglais de laravel qui est
Introduction

Blade is the simple, yet powerful templating engine provided with Laravel. Unlike other popular PHP templating engines, Blade does not restrict you from using plain PHP code in your views.<b> All Blade views are compiled into plain PHP code and cached until they are modified,</b> meaning Blade adds essentially zero overhead to your application. Blade view files use the .blade.php file extension and are typically stored in the resources/views directory.
tu vas comprendre que par défault tous les views sont cachés automatiquement donc il faut lire d'abord avant juger

Comme tout moteur de template qui se respecte ^^

Petite astuce au passage : pour avoir de meilleurs performances, c'est préférable d'utiliser le Query Builder plutôt qu'Eloquent.

Le cache, redis, optimiser les requêtes pour les relations :

Users::with('posts')->with(['comments' => function($query) {
    $query->select('id, 'content')->newest();
}])->get();    

Utiliser les "queues" avec Redis (ou autre) qui sont un peu comme les services sous Symfony (en résumé simpliste). Déjà c'est une bonne base pour travailler ;)