
Глава 13. Перспективы исследований, связанных с кэшированием 457
Конвейерная обработка запросов на упреждающую проверку актуальности
представляет значительный интерес, поскольку при этом не возникает проблем
с блокированием (см. главу 7, раздел 7.5.4), т.к. запросы HEAD обычно не требуют
сколько-нибудь значительной работы исходного сервера. Кроме того, отсутствует
ожидание завершения упреждаюш;ей проверки актуальности на стороне агента
пользователя. Упреждающая проверка актуальности не будет оказывать какого-ли-
бо влияния на общее снижение времени ожидания при передаче ресурса пользова-
телю,
за исключением, быть может, увеличения времени ожидания в случаях, когда
кэшировапный ресурс действительно устарел. Если проверяемый на актуальность
ресурс больше не запрашивается, запрос HEAD также бесполезно загружает исход-
ный сервер.
13.1,3.
Использование совмещения
Запросы HEAD могут также быть использованы для определения, не устарел
ли ответ, не выполняя передачи самого ресурса. Однако основной составляющей
времени ожидания являются время на установление соединений с исходным серве-
ром. Частично это объясняется тем, что фактическое время, затрачиваемое на пере-
дачу ответа от исходного сервера прокси-серверу, является относительно неболь-
шим, принимая во внимание, что большинство ответов имеет небольшой размер.
Для очень больших или динамически генерируемых ответов время, затрачиваемое
на генерирование ресурса, может превысить время передачи.
Один из способов избежать затрат на соединение — передать несколько запро-
сов и ответов по одному соединению. Возможность поддержания долговременных
соединений в НТТР/1.1 позволяет уменьшить потребность в новых соединениях.
Однако сильно загруженный сервер может закрывать долговременные соедине-
ния — протокол это допускает. Если соединение с исходным сервером уже откры-
то,
прокси-сервер может отправлять запросы HEAD для проверки актуальности
без затрат на установление новых соединений. Однако в связи с тем, что в кэше
имеется интервал времени по умолчанию, в течение которого предполагается, что
кэшировапный ответ по-прежнему актуален, пет смысла выполнять повторную
проверку на актуальность до истечения этого интервала.
Рассмотрим технологию, впервые описанную в [KW97J, в соответствии с кото-
рой исходным сервером отслеживается актуальность кэшированных ресурсов.
Предположим, что запрос на ресурс инициирует соединение с одним из исходных
серверов. Соединение с этим исходным сервером будет установлено в любом слу-
чае,
поэтому в нем можно осуществить проверку на актуальность множества отве-
тов исходного сервера, срок хранения которых истек. Такая проверка актуальности
выполняется путем совмещения этих запросов с запросом на ресурс путем помеще-
ния их в конец запроса. В качестве примера предположим, что прокси-сервер име-
ет десяток ответов исходного сервера www.a.org, четыре из них находятся в кэше,
время хранения для них истекло. При получении запроса на ресурс www.a.org/
other.html прокси-сервер формирует запрос GET в интересах клиента. Прокси-сер-
вер добавляет информацию о четырех ресурсах, время хранения которых истекло,
к запросу на www.a.org/other.html. Добавленная информация состоит из имени
ресурса, времени его последней модификации и, возможно, его размера. Исходный
сервер отвечает на запрос на ресурс www.a.org/other.html и может добавить мета-
данные о четырех других ресурсах.
Исходный сервер, который отправляет информацию о других проверяемых на
актуальность ресурсах, выполняет меньше работы, поскольку полноценный обмен