Fragmentcache

Die HTTP-Server-API bietet Funktionen, mit der Benutzer Datenfragmente in einem Cache speichern können, um schnell http-Antworten zu erstellen.

Fragmente können dem Cache hinzugefügt werden, indem die funktion HttpAddFragmentToCache aufgerufen wird. Ein Fragment wird durch eine URL identifiziert, die im pUrlPrefix Parameter enthalten ist. Ein Aufruf dieser Funktion mit der URL eines vorhandenen Fragments überschreibt das vorhandene Fragment.

Ein Fragment kann vom Besitzer der Anforderungswarteschlange gelöscht oder überschrieben werden, die das Fragment anfänglich hinzugefügt hat. Die HttpFlushResponseCache Funktion, die mit einer UrlPrefix aufgerufen wird, löscht alle Fragmente innerhalb dieses Präfixes sowie die hierarchischen Nachfolger dieses UrlPrefix. Die HttpReadFragmentFromCache--Funktion liest das gesamte Fragment oder einen angegebenen Bytebereich innerhalb des Fragments vor.

Anmerkung

Das Hinzufügen eines Fragments zum Cache garantiert nicht, dass es für zukünftige Anrufe zum Senden einer Antwort verfügbar ist. Fragmentcacheeinträge können jederzeit nicht verfügbar sein. Ein Aufruf, der ein nicht verfügbares Fragment verwendet, schlägt fehl. Anwendungen, die den Fragmentcache verwenden, müssen vorbereitet sein, um diesen Fehler zu behandeln.

 

Senden einer Antwort mit einem Fragment

Fragmente können verwendet werden, um alle Teile eines ENTITÄTstexts für HTTP-Antworten zu bilden. Sie können einen Antwort- und Entitätstext in einem Aufruf der HttpSendHttpResponse-funktion senden, indem Sie ein Array von HTTP_DATA_CHUNK Strukturen in der HTTP_RESPONSE-Struktur angeben.

Ein HTTP_DATA_CHUNK kann einen Speicherblock, ein Handle für eine bereits geöffnete Datei oder einen Fragmentcacheeintrag angeben. Diese entsprechen den HTTP_DATA_CHUNK Typen: HttpDataChunkFromMemory, HttpDataChunkFromFileHandleund HttpDataChunkFromFragmentCache. Vollständige Antworten im HTTP-Cache können auch als Fragmente in der HTTP_RESPONSE-Struktur verwendet werden, obwohl diese Vorgehensweise nicht empfohlen wird.

Die HTTP_RESPONSE-Struktur enthält einen Zeiger auf ein Array von HTTP_DATA_CHUNK Strukturen, die den Entitätstext der Antwort umfassen. Die HTTP_RESPONSE Struktur enthält auch eine übereinstimmende Anzahl, die die Dimension des Arrays HTTP_DATA_CHUNK Strukturen angibt. Der HttpDataChunkFromFragmentCache-Wert in der HTTP_DATA_CHUNK-Struktur gibt den Fragmentcachetyp des Datenblocks an. Die HTTP_DATA_CHUNK Struktur gibt auch den Fragmentnamen an.

Eine Antwort, die ein zwischengespeichertes Fragment enthält, schlägt mit einer ERROR_PATH_NOT_FOUND fehl, wenn eines der Fragmentcacheeinträge nicht verfügbar ist. Da die Fragmentcacheeinträge nicht garantiert verfügbar sind, müssen Anwendungen darauf vorbereitet sein, diesen Fall zu behandeln. Eine Möglichkeit, diesen Fall zu behandeln, besteht darin, den Fragmentcacheeintrag erneut hinzuzufügen und die Antwort erneut zu senden. Wenn wiederholte Fehler auftreten, kann die Anwendung Datenblöcke verwenden, die in Speicherpuffern gespeichert sind, anstelle von Fragmentcacheeinträgen.

Fragmentcacheeinträge können auch in der funktion HttpSendResponseEntityBody angegeben werden. Das Fragment wird dem Entitätstext in der HTTP_DATA_CHUNK Struktur wie oben beschrieben hinzugefügt. Auch hier kann der Sendevorgang fehlschlagen, wenn keine der angegebenen Fragmentcacheeinträge verfügbar ist.