L'API RESTFul est un style d'interface basé sur l'implémentation du protocole HTTP. Il sépare l'identifiant de la ressource et l'état de la ressource, ce qui facilite l'interaction entre le client et le serveur. Dans le processus d'utilisation de l'API RESTful, Cache joue un rôle important dans l'optimisation des performances. Le contrôle du cache fait référence à la définition des en-têtes HTTP sur le serveur pour dire au client comment mettre en cache et utiliser le cache.
Les en-têtes HTTP font partie des demandes et réponses HTTP, et ils contiennent des informations sur le contenu de la réponse, le contrôle du cache, l'authentification, etc. En contrôle de cache API RESTFul, les en-têtes HTTP couramment utilisés sont:
Cache-Control est une nouvelle instruction ajoutée dans HTTP / 1.1 pour contrôler le comportement de cache des demandes du client, des caches de serveur proxy et des réponses du serveur. Les valeurs courantes sont les suivantes:
ETAG est une balise d'entité dans l'en-tête de réponse HTTP qui identifie l'état de la ressource actuelle. Lors de la demande, le client envoie la valeur ETAG précédemment obtenue au serveur via l'en-tête If-None-Match. Le serveur compare si la valeur ETAG est cohérente. S'il est cohérent, il renvoie une réponse 304 non modifiée. Le client peut directement utiliser le cache.
La dernière modification est une valeur de date de date dans l'en-tête de réponse HTTP qui identifie la dernière heure modifiée de la ressource actuelle. Lors de la demande, le client envoie la valeur de date et d'heure précédemment obtenue au serveur via l'en-tête si modifié-sidément. Le serveur compare si la date et l'heure sont cohérentes. S'il est cohérent, il renvoie une réponse 304 non modifiée. Le client peut directement utiliser le cache.
La mise en œuvre du contrôle du cache API RESTful dans PHP peut être réalisée en définissant les informations d'en-tête HTTP.
Vous pouvez définir l'en-tête de contrôle de cache via la fonction d'en-tête sur le serveur, le code est le suivant:
$maxAge = 600; // cache600Deuxième
header('Cache-Control: public, max-age=' . $maxAge);
Le code ci-dessus définit l'en-tête de contrôle de cache vers le public, indiquant que la réponse peut être mise en cache par n'importe quel intermédiaire (comme un serveur proxy) et que le temps de cache maximal est de 600 secondes.
Vous pouvez définir l'en-tête ETAG via la fonction d'en-tête du serveur, le code est le suivant:
$etag = md5($responseBody); // Générer des balises d'entité en fonction du contenu de la réponse
header('ETag: ' . $etag);
Le code ci-dessus génère une balise ETAG basée sur le contenu de réponse et le définit dans le cadre de l'en-tête de réponse.
L'en-tête dernier modifié peut être défini via la fonction d'en-tête sur le serveur, et le code est le suivant:
$lastModifiedTime = filemtime($filePath); // Obtenez le dernier temps de modification du fichier
$lastModified = gmtdate('r', $lastModifiedTime);
header('Last-Modified: ' . $lastModified);
Le code ci-dessus prend le dernier temps de modification du fichier, le convertit au format GMT, puis le définit dans le cadre de l'en-tête de réponse.
Le contrôle du cache de l'API RESTful peut considérablement améliorer les performances de l'application et réduire les demandes et les réponses aux ressources du serveur. Lors de la mise en œuvre du contrôle de cache de l'API RESTFul, nous pouvons configurer des en-têtes HTTP pour dire au client comment mettre en cache et utiliser le cache. L'en-tête HTTP comprend des informations importantes telles que le contrôle du cache, l'ETAG et la dernière modification. Le client peut utiliser ces informations pour déterminer si la réponse du cache peut être utilisée directement.