Les applications de Laravel rencontrent souvent des obstacles de performances lorsqu'ils traitent des ensembles de données approfondis. L'envoi de l'ensemble de données entier peut entraîner un épuisement de la mémoire et des temps de réponse lents. La méthode streamJson
de Laravel fournit une solution robuste en activant le streaming incrémentiel de données JSON, idéal pour fournir de grands ensembles de données au client efficacement et de manière conviviale javascript.
compréhension streamJson()
La méthode streamJson
, qui fait partie de l'objet de réponse de Laravel, facilite la livraison progressive des données JSON. Cela améliore considérablement les performances et la gestion de la mémoire pour les grands ensembles de données. Son utilisation de base est simple:
response()->streamJson(['data' => $yourDataset]);
Application pratique: gestion des stocks
Considérez un scénario impliquant une grande base de données d'inventaire avec des informations détaillées sur les produits et des données de fournisseur et de variantes associées. Implémentation streamJson
Optimise la livraison de données:
<?php namespace App\Http\Controllers; use App\Models\Inventory; class InventoryController extends Controller { public function list() { return response()->streamJson([ 'inventory' => Inventory::with('supplier', 'variants')->cursor()->map(function ($item) { return [ 'id' => $item->id, 'sku' => $item->sku, 'quantity' => $item->quantity, 'supplier' => $item->supplier->name, 'variants' => $item->variants->pluck('name')->toArray(), // Ensure variants is an array ]; }), ]); } }
Cet exemple exploite le chargement impatient (with
) pour éviter les problèmes de requête N 1. La méthode cursor()
permet une itération efficace, tandis que map()
formats chaque élément d'inventaire pour le streaming.
Sortie en difficulté:
La sortie sera un flux JSON ressemblant à ceci:
{ "inventory": [ { "id": 1, "sku": "INV-001", "quantity": 150, "supplier": "Global Supplies Inc", "variants": ["red", "blue", "green"] }, { "id": 2, "sku": "INV-002", "quantity": 75, "supplier": "Quality Goods Ltd", "variants": ["small", "medium"] }, // ... subsequent inventory items streamed incrementally ] }
Cette livraison incrémentielle permet au navigateur de commencer à rendre immédiatement des données, améliorant l'expérience utilisateur avec un chargement initial plus rapide et des mises à jour progressives de l'interface utilisateur. streamJson
est inestimable lors de la gestion des ensembles de données trop importants pour le traitement à charge unique. Il offre une augmentation significative des performances et une expérience utilisateur plus lisse.
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!