Поделиться через


Функция HttpAddFragmentToCache (http.h)

Функция HttpAddFragmentToCache кэширует фрагмент данных с указанным именем, с помощью которого его можно получить, или обновляет данные, кэшированные под указанным именем. Такие кэшированные фрагменты данных можно многократно использовать для создания динамических ответов без затрат на операции чтения на диске. Например, ответ, состоящий из текста и трех изображений, можно динамически собирать из четырех или более кэшированных фрагментов во время обработки запроса.

Синтаксис

HTTPAPI_LINKAGE ULONG HttpAddFragmentToCache(
  [in]           HANDLE             RequestQueueHandle,
  [in]           PCWSTR             UrlPrefix,
  [in]           PHTTP_DATA_CHUNK   DataChunk,
  [in]           PHTTP_CACHE_POLICY CachePolicy,
  [in, optional] LPOVERLAPPED       Overlapped
);

Параметры

[in] RequestQueueHandle

Дескриптор очереди запросов, с которой связан этот кэш. Создается очередь запросов, а ее дескриптор возвращается вызовом функции HttpCreateRequestQueue .

Windows Server 2003 с пакетом обновления 1 (SP1) и Windows XP с пакетом обновления 2 (SP2): Дескриптор очереди запросов создается функцией HttpCreateHttpHandle .

[in] UrlPrefix

Указатель на строку UrlPrefix , которую приложение использует в последующих вызовах HttpSendHttpResponse для идентификации этой записи кэша. Приложение должно вызывать HttpAddUrl ранее с тем же дескриптором, что и в параметре ReqQueueHandle , и с этой идентичной строкой UrlPrefix или допустимым префиксом.

Как и любая строка UrlPrefix, эта строка должна иметь вид "scheme://host:port/relativeURI"; например, http://www.mysite.com:80/image1.gif.

[in] DataChunk

Указатель на структуру HTTP_DATA_CHUNK , указывающую блок данных тела сущности для кэширования под именем, на которое указывает pUrlPrefix.

[in] CachePolicy

Указатель на структуру HTTP_CACHE_POLICY , указывающую способ кэширования этого фрагмента данных.

[in, optional] Overlapped

Для асинхронных вызовов задайте для параметра pOverlapped значение , указывающее на структуру OVERLAPPED , а для синхронных вызовов — значение NULL.

Синхронный вызов блокирует вызывающий поток до завершения операции кэширования, в то время как асинхронный вызов немедленно возвращает ERROR_IO_PENDING, а вызывающее приложение затем использует порты getOverlappedResult или завершения ввода-вывода, чтобы определить, когда операция завершена. Дополнительные сведения об использовании структур OVERLAPPED для синхронизации см. в разделе Синхронизация и перекрытие входных и выходных данных.

Возвращаемое значение

Если функция выполнена успешно, возвращаемое значение будет NO_ERROR.

Если функция используется асинхронно, возвращаемое значение ERROR_IO_PENDING указывает, что запрос кэша помещается в очередь и будет завершен позже с помощью обычных перекрывающихся механизмов завершения ввода-вывода.

Если функция завершается сбоем, возвращается один из следующих кодов ошибок.

Значение Значение
ERROR_INVALID_PARAMETER
Один или несколько предоставленных параметров находится в непригодной для использования форме.
Другое
Код системной ошибки, определенный в WinError.h.

Требования

Требование Значение
Минимальная версия клиента Windows Vista, Windows XP с пакетом обновления 2 (SP2) [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header http.h
Библиотека Httpapi.lib
DLL Httpapi.dll

См. также раздел

Функции API HTTP-сервера версии 1.0

HttpFlushResponseCache

HttpReadFragmentFromCache