BTS SIO2D
  • Accueil
  • Connexion
21 décembre 2024 par Nathan Guche

Optimiser les performances d’une application Laravel : Bonnes pratiques

Optimiser les performances d’une application Laravel : Bonnes pratiques
21 décembre 2024 par Nathan Guche

Table des matières

Toggle
  • ⚡ Optimiser les performances d’une application Laravel : Bonnes pratiques
    • 1️⃣ Optimiser l’autoloading des classes
    • 2️⃣ Utiliser le cache de configuration et de routes
    • 3️⃣ Activer l’OPcache en production
    • 4️⃣ Optimiser les requêtes Eloquent
      • 🚀 Utiliser le Lazy Loading au lieu du Eager Loading
      • 📌 Sélectionner uniquement les colonnes nécessaires
      • 📌 Utiliser le caching avec remember()
    • 5️⃣ Utiliser Redis comme cache
    • 6️⃣ Optimiser les jobs et les queues
    • 7️⃣ Activer la mise en cache HTTP avec Laravel Response Cache
    • 8️⃣ Minifier et combiner les fichiers CSS et JS
      • 📌 Utiliser Laravel Mix
    • 9️⃣ Activer la compression Gzip et Brotli
    • 🔮 Conclusion : Laravel ultra-rapide !

⚡ Optimiser les performances d’une application Laravel : Bonnes pratiques

Laravel est un framework puissant, mais si ton application devient lente, l’expérience utilisateur en pâtit. Heureusement, il existe de nombreuses techniques pour optimiser Laravel et le rendre rapide et efficace. 🎯

Dans ce guide, nous allons voir les meilleures pratiques pour booster les performances de ton application Laravel. 🔥


1️⃣ Optimiser l’autoloading des classes

Laravel utilise Composer pour gérer ses dépendances. Optimiser l’autoloading réduit le temps de chargement.

📌 Lancer cette commande en production :

bashCopierModifiercomposer install --optimize-autoloader --no-dev

✅ Cela supprime les packages inutiles et optimise les fichiers de classe.


2️⃣ Utiliser le cache de configuration et de routes

Laravel propose plusieurs systèmes de cache pour accélérer l’exécution.

📌 Mettre en cache la configuration :

bashCopierModifierphp artisan config:cache

✅ Laravel chargera plus rapidement les fichiers de configuration.

📌 Mettre en cache les routes (uniquement pour les applications sans routes dynamiques) :

bashCopierModifierphp artisan route:cache

✅ Les routes seront chargées plus vite.

📌 Mettre en cache les vues Blade :

bashCopierModifierphp artisan view:cache

✅ Réduit le temps de compilation des vues.

📌 Vider le cache si nécessaire :

bashCopierModifierphp artisan cache:clear
php artisan config:clear
php artisan route:clear
php artisan view:clear

3️⃣ Activer l’OPcache en production

OPcache permet de stocker en mémoire les fichiers PHP compilés pour éviter leur recompilation à chaque requête.

📌 Vérifie si OPcache est activé :

bashCopierModifierphp -i | grep opcache

📌 Si ce n’est pas activé, ajoute ceci dans php.ini :

iniCopierModifieropcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=128
opcache.max_accelerated_files=4000
opcache.validate_timestamps=0

✅ Gros gain de performances ! 🚀


4️⃣ Optimiser les requêtes Eloquent

🚀 Utiliser le Lazy Loading au lieu du Eager Loading

📌 Mauvaise pratique :

phpCopierModifier$users = User::all();
foreach ($users as $user) {
    echo $user->profile->bio; // Charge le profil pour chaque utilisateur !
}

🔴 Problème : Cela crée N+1 requêtes (très lent).

📌 Bonne pratique (Eager Loading) :

phpCopierModifier$users = User::with('profile')->get();

✅ Cela charge les profils en une seule requête !


📌 Sélectionner uniquement les colonnes nécessaires

📌 Éviter SELECT * et ne récupérer que ce qui est nécessaire :

phpCopierModifier$users = User::select('id', 'name', 'email')->get();

✅ Réduit la quantité de données transférées.


📌 Utiliser le caching avec remember()

📌 Éviter les requêtes répétitives en utilisant le cache :

phpCopierModifieruse Illuminate\Support\Facades\Cache;

$users = Cache::remember('users', 60, function () {
    return User::all();
});

✅ Cela stocke les résultats en cache pendant 60 minutes !


5️⃣ Utiliser Redis comme cache

Laravel utilise par défaut le cache en fichiers, mais Redis est beaucoup plus rapide.

📌 Installer Redis :

bashCopierModifiercomposer require predis/predis

📌 Configurer .env :

envCopierModifierCACHE_DRIVER=redis
SESSION_DRIVER=redis
QUEUE_CONNECTION=redis

✅ Les sessions, le cache et les jobs seront bien plus rapides ! 🔥


6️⃣ Optimiser les jobs et les queues

Laravel permet d’exécuter les tâches en arrière-plan avec des queues (parfait pour l’envoi d’e-mails, la génération de rapports, etc.).

📌 Ne pas exécuter les jobs directement :

phpCopierModifierdispatch(new SendEmailJob($user));

📌 Utiliser un worker en production :

bashCopierModifierphp artisan queue:work --daemon

✅ Évite que les requêtes restent bloquées en attendant l’exécution des jobs.


7️⃣ Activer la mise en cache HTTP avec Laravel Response Cache

Le package spatie/laravel-responsecache permet de mettre en cache les réponses HTTP pour éviter de recalculer les pages statiques.

📌 Installation :

bashCopierModifiercomposer require spatie/laravel-responsecache

📌 Ajoute ce middleware dans app/Http/Kernel.php :

phpCopierModifier\Spatie\ResponseCache\Middlewares\CacheResponse::class

📌 Exemple d’utilisation pour mettre en cache une route :

phpCopierModifierRoute::get('/homepage', function () {
    return view('homepage');
})->middleware('cache.response');

✅ Gains de performance énormes ! 🚀


8️⃣ Minifier et combiner les fichiers CSS et JS

📌 Utiliser Laravel Mix

Dans webpack.mix.js :

jsCopierModifiermix.js('resources/js/app.js', 'public/js')
   .sass('resources/sass/app.scss', 'public/css')
   .version();

Puis exécute :

bashCopierModifiernpm run prod

✅ Cela minifie et optimise les fichiers CSS et JS.


9️⃣ Activer la compression Gzip et Brotli

Sur Apache (mod_deflate) :
Ajoute ceci dans .htaccess :

apacheCopierModifier<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript
</IfModule>

Sur Nginx :
Ajoute ceci dans nginx.conf :

nginxCopierModifiergzip on;
gzip_types text/plain text/css application/javascript;
gzip_vary on;

✅ Réduit la taille des fichiers envoyés au navigateur.


🔮 Conclusion : Laravel ultra-rapide !

En appliquant ces optimisations, ton application Laravel sera beaucoup plus rapide 🚀 :
✅ Autoload optimisé
✅ Configuration et routes en cache
✅ OPcache activé
✅ Requêtes Eloquent optimisées
✅ Redis pour le cache et les sessions
✅ Jobs exécutés en arrière-plan
✅ Compression et minification des fichiers

Article précédentVIII) Stratégie d’Angular pour 2025Article suivant Article Décembre

Laisser un commentaire Annuler la réponse

Vous devez vous connecter pour publier un commentaire.

About The Blog

Nulla laoreet vestibulum turpis non finibus. Proin interdum a tortor sit amet mollis. Maecenas sollicitudin accumsan enim, ut aliquet risus.

Articles récents

projet flutter Forum28 avril 2025
Backup BDD Bash17 mars 2025
UE – TF1 se met à Unreal Engine ?17 mars 2025

Catégories

  • Article Angular Killian
  • Article Clément
  • Article Unreal Engine Hugo
  • Cybersécurité
  • IA
  • Non classé
  • Projet Flutter KHM
  • Projet Hugo
  • Stage Clément
  • Stage Hugo
  • Stage Killian P
  • TP Clément

Méta

  • Inscription
  • Connexion
  • Flux des publications
  • Flux des commentaires
  • Site de WordPress-FR

Étiquettes

Article Développer son projet professionnel Flutter Gérer son identité professionnelle Java Stage Symfony TP

Why Lander

Lander is a design prepared
especially for the free version
of Rife WordPress Theme.

You can use this for free.
Make your website today.
Get Started Now!

Contact

734 Blackwell Street
Anchorage, Alaska
info@domain.com
+33 (0) 101 0000
+33 (0) 102 0000
Mon. - Fri. 8AM - 6PM

Articles récents

projet flutter Forum28 avril 2025
Backup BDD Bash17 mars 2025
UE – TF1 se met à Unreal Engine ?17 mars 2025
Rife Wordpress Theme. Proudly Built By Apollo13