À mesure que les applications Web fonctionnent de plus en plus longtemps, les performances du serveur et les vitesses de transfert de données deviennent des problèmes de plus en plus importants. La mise en cache HTTP est un moyen de résoudre ce problème. La mise en cache des ressources couramment utilisées côté client peut permettre aux applications de répondre plus rapidement aux demandes et de réduire la charge sur le serveur. En tant que langage de développement Web, PHP 8.0 possède également sa propre solution pour gérer la mise en cache HTTP, à savoir PSR-7.
PSR-7 est un standard PHP conçu pour les messages HTTP, fournissant une interface unifiée pour créer et traiter les messages de requête et de réponse HTTP. Il définit les composants de base d'un message HTTP (par exemple, les en-têtes HTTP, l'URI de la requête, la méthode HTTP, le corps HTTP) et comment les construire, les sérialiser et les analyser.
Dans le cas de la mise en cache HTTP, un rôle important du PSR-7 est de normaliser les en-têtes de message HTTP, qui est la norme pour contrôler la mise en cache. Les agents utilisateurs peuvent utiliser les informations d'en-tête telles que Cache-Control pour contrôler le comportement de la mise en cache. L'utilisation de PSR-7 est donc cruciale si nous voulons obtenir une mise en cache HTTP efficace.
Voici quelques solutions de mise en cache HTTP que PSR-7 peut fournir :
1.Le cache ETag
Le cache ETag est un cache de balises d'entité. Lorsqu'un client demande une ressource, un ETag est ajouté à l'en-tête de réponse, qui est stocké par le client et renvoyé au serveur la prochaine fois que la même ressource est demandée. Le serveur vérifie si l'ETag du client est le même que la ressource côté serveur. Si tel est le cas, le serveur renverra un en-tête de réponse avec un code de réponse 304 Not Modified et extraira les ressources du cache du client, évitant ainsi la transmission répétée des ressources et réduisant la charge sur le serveur.
La mise en cache ETag peut être facilement implémentée à l'aide de PSR-7. En ajoutant un en-tête ETag au message de réponse, l'ETag peut être facilement renvoyé au client pour la prochaine requête. Le serveur utilise la valeur ETag à des fins de comparaison. Si les valeurs sont les mêmes, il n'envoie plus la ressource, mais envoie à la place une réponse 304 Not Modified. Voici un exemple :
$response = new Response();
$response = $response
->withHeader('ETag', 'MyETagValue');
$response = $response
->withHeader('Last-Modified', 'LastModifiedDate');
$response = $response
->withHeader('Cache-Control', 'max-age=3600');
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!