Comment créer une couche de mise en cache pour votre API Laravel

DEV - 09/08
Disons que vous créez une API pour servir certaines données, vous découvrez que les réponses GET sont assez lentes. Toi...

Disons que vous créez une API pour servir certaines données, vous découvrez que les réponses GET sont assez lentes. Vous avez essayé d'optimiser vos requêtes, d'indexer les tables de votre base de données par colonnes fréquemment interrogées et vous n'obtenez toujours pas les temps de réponse souhaités. La prochaine étape à franchir consiste à écrire une couche de mise en cache pour votre API. « Couche de mise en cache » n'est ici qu'un terme sophistiqué pour désigner un middleware qui stocke les réponses réussies dans unrapide à récupérermagasin. par ex. Redis, Memcached, etc., toute autre demande adressée à l'API vérifie si les données sont disponibles dans le magasin et fournit la réponse.

Conditions préalables

  • Laravel
  • Rédis

Avant de commencer

Je suppose que si vous êtes arrivé ici, vous savez comment créer une application Laravel. Vous devez également disposer d’une instance Redis locale ou cloud à laquelle vous connecter. Si vous avez Docker localement, vous pouvez copier mon fichier de composition ici. Aussi, pour un guide sur la façon de se connecter au pilote de cache Redis, lisez ici.

Création de nos données factices

Pour nous aider à voir que notre couche de mise en cache fonctionne comme prévu. bien sûr, nous avons besoin de données, disons que nous avons un modèle nommé Post. je vais donc créer quelques articles, j'ajouterai également un filtrage complexe qui pourrait nécessiter beaucoup de base de données et nous pourrons ensuite optimiser par mise en cache.

Commençons maintenant à écrire notre middleware :

Nous créons notre squelette middleware en exécutant

php artisan make:middleware CacheLayer
Entrer en mode plein écran Quitter le mode plein écran

Enregistrez-le ensuite dans votre app/Http/Kernel.php sous le groupe middleware API comme ceci :

protected $middlewareGroups = [ 'api' => [ CacheLayer::class, ], ];
Entrer en mode plein écran Quitter le mode plein écran

Mais si vous utilisez Laravel 11, enregistrez-le dans votre bootstrap/app.php

->withMiddle...
[Courte citation de 8% de l'article original]
Loading...