Maison >développement back-end >tutoriel php >Bibliothèque de mise en cache HTTP en PHP8.0 : PSR-7

Bibliothèque de mise en cache HTTP en PHP8.0 : PSR-7

王林
王林original
2023-05-14 08:48:201189parcourir

À 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');
  1. Last-Modified Cache#🎜🎜 #
Le cache Last-Modified est un cache de balises d'entité. Le serveur ajoute un en-tête Last-Modified à l'en-tête du message de réponse, dont la valeur est l'heure de la dernière modification de la ressource demandée. Lorsque le client demande la même ressource la prochaine fois, il renvoie les informations d'en-tête Last-Modified au format date et heure au serveur. Le serveur vérifiera si ces informations d'en-tête correspondent à l'heure de la dernière modification de la ressource. Si tel est le cas, le serveur renvoie un en-tête de réponse avec un code de réponse 304 Not Modified et récupère la ressource du cache du client pour réduire la charge sur le serveur.

En utilisant psr-7, vous pouvez également facilement implémenter la mise en cache Last-Modified. Exemple de code :

$response = new Response();

$response = $response

->withHeader('Last-Modified', 'LastModifiedDate');

    Cache-Control cache stratégie
Cache-Control La stratégie de cache est une méthode définie dans l'en-tête du message de réponse pour contrôler la méthode de mise en cache. Il réduit les requêtes du client, réduisant ainsi la charge sur le serveur. Les informations d'en-tête Cache-Control ont les types suivants :

    max-age : La durée maximale de mise en cache.
  • no-cache : peut être mis en cache, mais chaque utilisation nécessite une vérification valide.
  • no-store : ne doit pas être mis en cache.
  • private/public : Le cache est uniquement destiné aux clients privés/partageables.
  • must-revalidate : Une revérification est requise après l'expiration.
  • stale-while-revalidate : Après l'expiration du temps de cache, les anciennes données seront renvoyées tout en obtenant de nouvelles données.
  • stale-if-error : En cas d'anomalie du réseau, s'il y a un cache, le cache sera également restitué.
Ce qui suit est un exemple de mise en œuvre de la stratégie de cache Cache-Control via PSR-7. Ajoutez simplement les informations nécessaires dans l'en-tête de la réponse :

$response = new Response();

$response = $response

->withHeader('Cache-Control', 'max-age=3600');

Summary#🎜🎜 ## 🎜🎜#PSR-7 fournit une solution standardisée pour créer et traiter les messages de requête et de réponse HTTP, ce qui est essentiel pour obtenir une mise en cache HTTP efficace. Grâce à PSR-7, vous pouvez facilement implémenter des stratégies de mise en cache ETag, de mise en cache Last-Modified et de Cache-Control. Si vous créez une application Web à l'aide de PHP 8.0 et devez implémenter une mise en cache HTTP efficace, essayez PSR-7.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn