Avec le développement des applications Web, l'ampleur des données continue de croître, ce qui rend les requêtes dans les bases de données de plus en plus chronophages et gourmandes en ressources. Cela ralentit de nombreuses applications lors de l'interrogation et de l'affichage des données, car chaque requête nécessite la récupération de grandes quantités de données de la base de données.
En tant que développeur Laravel, nous sommes souvent confrontés au problème de savoir comment optimiser les requêtes, en particulier dans les requêtes de pagination. Laravel nous propose une solution, la mise en cache des requêtes.
Le cache de requêtes nous permet de mettre en cache les résultats lors de l'interrogation répétée des mêmes conditions, évitant ainsi les requêtes inutiles et la charge de la base de données. Ceci est particulièrement utile pour les grandes applications Web, qui doivent souvent interroger de grandes quantités de données.
Dans Laravel, la mise en cache des requêtes est implémentée via la façade Cache. La façade Cache peut être utilisée avec une variété de pilotes de cache, notamment File, Memcached, Redis, etc. Laravel sélectionne automatiquement le pilote de cache qui convient le mieux à la situation actuelle.
Jetons un coup d'œil à un exemple pour montrer comment utiliser la mise en cache des requêtes dans Laravel.
Tout d'abord, nous devons définir une requête dans notre modèle, par exemple :
namespace App; use Illuminate\Database\Eloquent\Model; class Product extends Model { public function getPriceRange($minPrice, $maxPrice) { return $this->whereBetween('price', [$minPrice, $maxPrice]) ->orderBy('price', 'desc') ->paginate(10); } }
Dans l'exemple ci-dessus, nous avons défini une requête appelée "getPriceRange" qui sélectionne les prix entre les produits $minPrice et $maxPrice. De plus, nous trions les résultats par ordre décroissant et utilisons la fonctionnalité de pagination de Laravel pour diviser les résultats en 10 par page.
Nous pouvons désormais appeler cette requête dans le contrôleur et la mettre en cache afin qu'elle soit accessible rapidement la prochaine fois que nous l'interrogerons. Nous pouvons utiliser la façade Cache pour ce faire.
namespace App\Http\Controllers; use App\Product; use Illuminate\Http\Request; use Illuminate\Support\Facades\Cache; class ProductController extends Controller { public function index(Request $request) { $minPrice = $request->input('min_price'); $maxPrice = $request->input('max_price'); $key = 'price_range_' . $minPrice . '_' . $maxPrice; $minutes = 60; $products = Cache::remember($key, $minutes, function() use ($minPrice, $maxPrice) { return (new Product)->getPriceRange($minPrice, $maxPrice); }); return view('products.index', ['products' => $products]); } }
Dans le code ci-dessus, nous utilisons la méthode "remember" de la façade Cache pour mettre en cache les résultats de notre requête. Le premier paramètre est la chaîne que nous souhaitons utiliser comme clé de cache, le deuxième paramètre est le nombre de minutes pendant lesquelles nous souhaitons que les résultats soient mis en cache et le troisième paramètre est une fermeture qui renvoie les résultats de notre requête.
Cela signifie que si nous avons une autre requête pour interroger la même fourchette de prix, Laravel renverra les résultats directement depuis le cache. Cela améliorera considérablement les performances et la vitesse de notre application.
La mise en cache des requêtes est une fonctionnalité très utile dans Laravel. En l'utilisant, nous pouvons éviter les requêtes inutiles et les charges de base de données, améliorant ainsi les performances et la vitesse de nos applications. En maîtrisant cette astuce simple, nous pouvons rendre notre carrière de développeur beaucoup plus facile et plus agréable.
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!