Cache en mode noyau

L’API serveur HTTP version 2.0 permet aux applications de mettre en cache des réponses avec du contenu statique en mode noyau. Des performances accrues sont obtenues lorsque les demandes sont traitées à partir du cache du noyau sans passer au mode utilisateur.

L’API serveur HTTP applique les configurations de propriété appropriées à toutes les requêtes traitées à partir du cache du noyau, y compris les réponses de journalisation. Toutefois, les demandes qui nécessitent une authentification ne seront pas traitées à partir du cache.

L’API serveur HTTP limite le cache en mode noyau aux requêtes qui répondent aux conditions suivantes :

  • Le verbe de requête est GET et la demande entière est reçue.
  • La demande ne doit pas avoir de corps d’entité.
  • Le protocole HTTP est version 1.0 ou ultérieure.
  • L’en-tête « Translate: f » n’est pas présent.
  • Les en-têtes autres que « Attendre : 100-Continuer » ne sont pas présents.
  • L’en-tête d’autorisation n’est pas présent.
  • Les en-têtes Range et If-Range ne sont pas présents.

En plus des restrictions sur la demande, la réponse doit également répondre aux conditions suivantes :

  • Par défaut, la taille de la réponse est limitée à 256 Ko. Pour modifier la taille de la réponse mise en cache, définissez la valeur de Registre UriMaxUriBytes sur le nombre d’octets requis.

    HKEY_LOCAL_MACHINE
       System
          CurrentControlSet
             Services
                HTTP
                   Parameters
                      UriMaxUriBytes
    
  • La réponse entière doit être fournie dans un seul appel à HttpSendHttpResponse.

  • L’en-tête de date de la réponse ne doit pas être supprimé.

  • Si l’en-tête de la dernière modification est présent, la valeur de l’en-tête doit avoir la syntaxe correcte. La valeur de temps dans cet en-tête est utilisée pour la vérification du contrôle du cache.

  • Le cache en mode noyau dispose de suffisamment d’espace pour stocker la réponse.

Par défaut, le cache de réponse en mode noyau est activé. Si l’une des conditions de la demande ou de la réponse répertoriée ci-dessus n’est pas remplie, la réponse est envoyée, mais elle ne sera pas mise en cache. Dans l’API HTTP Server version 2.0, HttpSendHttpResponse inclut un paramètre pCachePolicy facultatif pour passer la structure HTTP_CACHE_POLICY . Les applications utilisent la structure de stratégie de cache pour configurer le cache.