Cache de fragments

L’API du serveur HTTP fournit des fonctionnalités permettant aux utilisateurs de stocker des fragments de données dans un cache pour les utiliser dans la formation rapide des réponses HTTP.

Les fragments peuvent être ajoutés au cache en appelant la fonction HttpAddFragmentToCache . Un fragment est identifié par une URL contenue dans le paramètre pUrlPrefix . Un appel à cette fonction avec l’URL d’un fragment existant remplace le fragment existant.

Un fragment peut être supprimé ou remplacé par le propriétaire de la file d’attente de demandes qui a ajouté le fragment pour la première fois. La fonction HttpFlushResponseCache appelée avec un URLPrefix supprime tous les fragments de ce préfixe, ainsi que les descendants hiérarchiques de ce URLPrefix. La fonction HttpReadFragmentFromCache lit le fragment entier ou une plage d’octets spécifiée dans le fragment.

Notes

L’ajout d’un fragment au cache ne garantit pas qu’il est disponible pour les appels ultérieurs pour envoyer une réponse. Les entrées du cache de fragments peuvent devenir indisponibles à tout moment. Un appel qui utilise un fragment qui n’est pas disponible échoue. Les applications qui utilisent le cache de fragments doivent être préparées pour gérer cet échec.

Envoi d’une réponse avec un fragment

Les fragments peuvent être utilisés pour former la totalité ou une partie d’un corps d’entité de réponse HTTP. Vous pouvez envoyer une réponse et un corps d’entité dans un appel à la fonction HttpSendHttpResponse en spécifiant un tableau de structures de _ _ blocs de données http dans la structure de _ réponse http .

Un _ _ segment de données http peut spécifier un bloc de mémoire, un descripteur d’un fichier déjà ouvert ou une entrée de cache de fragments. Celles-ci correspondent aux types de _ _ blocs de données http : HttpDataChunkFromMemory, HttpDataChunkFromFileHandle et HttpDataChunkFromFragmentCache, respectivement. Les réponses complètes dans le cache HTTP peuvent également être utilisées comme fragments dans la structure de _ réponse http , bien que cette pratique ne soit pas recommandée.

La structure de _ réponse http contient un pointeur vers un tableau de structures de _ _ blocs de données http qui constituent le corps d’entité de la réponse. La structure de _ réponse http contient également un nombre correspondant qui spécifie la dimension du tableau de structures de _ _ blocs de données http . La valeur HttpDataChunkFromFragmentCache dans la structure de _ _ segment de données http spécifie le type de cache de fragment du segment de données. La structure de _ _ segment de données http spécifie également le nom du fragment.

Une réponse qui contient un fragment mis en cache échoue avec un _ chemin d’erreur _ _ introuvable si l’une des entrées du cache de fragments n’est pas disponible. Étant donné que les entrées du cache de fragments ne sont pas nécessairement disponibles, les applications doivent être préparées pour gérer ce cas. Pour gérer ce cas, vous pouvez essayer d’ajouter à nouveau l’entrée du cache de fragment et de renvoyer la réponse. En cas de défaillances répétées, l’application peut utiliser des blocs de données stockés dans des mémoires tampons au lieu d’entrées de fragment du cache.

Les entrées du cache de fragments peuvent également être spécifiées dans la fonction HttpSendResponseEntityBody . Le fragment est ajouté au corps d’entité dans la structure de _ _ segment de données http comme décrit ci-dessus. Là encore, l’envoi peut échouer si l’une des entrées du cache de fragments spécifiée n’est pas disponible.