Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Сетевые протоколы в инфокоммуникациях (ПЗ).docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
3.51 Mб
Скачать

Директива No-Transform

Разработчики промежуточных кэшей (прокси) выяснили, что полезно преобразовать тип среды для тел определенных объектов. Прокси может, например, преобразовать форматы изображения для того, чтобы сэкономить место в памяти кэша или чтобы уменьшить информационный поток в тихоходном канале. HTTP должен датировать такие преобразования, выполняемые без оповещения.

Серьезные операционные проблемы происходят, однако, когда такие преобразования производятся над телами объектов, предназначенных для определенного сорта приложений: например, для приложений, использующих медицинские изображения, предназначенные для анализа научных данных, а также тех, которые применяют авторизацию endtoend или требуют побитной совместимости с оригиналом.

Следовательно, если отклик содержит директиву no-transform, промежуточный кэш или прокси не должны изменять те заголовки, так как они могут содержать директиву no-transform. Это предполагает, что кэш или прокси не должны изменять любую часть тела объекта, который имеет такие заголовки.

Расширения управления кэшем

Поле заголовка Cache-Control может быть расширено за счет использования одной или более лексем расширения, каждой из которых может быть присвоено определенное значение. Информационные расширения (те, которые не требуют изменений в работе кэша) могут быть добавлены без изменения семантики других директив. Поведенческие расширения спроектированы для того, чтобы выполнять функции модификаторов существующих директив управления кэшем. Новые директивы и стандартные директивы устроены так, что приложения, которые не воспринимают новую директиву, по умолчанию исполнят стандартную процедуру. Те же приложения, которые распознают новую директиву, воспринимают ее как модификацию стандартной процедуры. Этот способ дает возможность расширить директивы управления кэшем без изменения базового протокола.

Этот механизм расширений зависит от того, выполняет ли кэш все директивы управления, определенные для базовой версии HTTP. Предполагается, что кэш реализует определенные расширения и игнорирует все директивы, которые не может распознать.

Например, рассмотрим гипотетическую новую директиву, названную community, которая действует как модификатор директивы private. Мы определяем эту новую директиву так, что, в дополнение к стандартным возможностям индивидуальных кэшей, кэши, которые обслуживают группу (community), могут кэшировать их отклики. Исходный сервер, желающий позволить группе UCI использовать частные отклики на их общем кэше, может решить эту проблему, включив директиву управления кэшем: private, community=UCI.

Кэш, получив это поле заголовка, будет действовать корректно, если даже не понимает расширение community, так как он видит и понимает директиву private и, таким образом, по умолчанию обеспечит безопасное функционирование.

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