Лаборатория поисковой оптимизации

Фрагменты байт


 <  Фрагмент  Содержание  Запросы получения фрагментов  > 

Так как все объекты HTTP в процессе передачи представляют собой последовательности байт, концепция фрагментов является существенной для любого объекта HTTP. Однако не все клиенты и серверы нуждаются в поддержке операций с фрагментами.

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

Операция с байтовыми фрагментами может относиться к одному набору байт или к нескольким таким наборам в пределах одного объекта.

ranges-specifier

= byte-ranges-specifier

byte-ranges-specifier

= byte-sunit "=" byte-range-set

byte-range-set

= 1#( byte-range-spec | suffix-byte-range-spec )

byte-range-spec

= first-byte-pos "-" [last-byte-pos]

first-byte-pos

= 1*DIGIT

last-byte-pos

= 1*DIGIT

Значение first-byte-pos в спецификации byte-range-spec указывает на относительное положение первого байта фрагмента. Значение last-byte-pos определяет относительное положение последнего байта фрагмента. Относительное положение начального байта равно нулю.

Если присутствует значение last-byte-pos, оно должно быть больше или равно значению first-byte-pos в спецификации byte-range-spec, в противном случае спецификация byte-range-spec не корректна. Получатель некорректной спецификации byte-range-spec должен ее игнорировать.

Если значение last-byte-pos отсутствует, или если значение больше или равно текущей длине тела объекта, значение last-byte-pos берется на единицу меньше текущего значения длины тела объекта в байтах.

При выборе last-byte-pos, клиент может ограничить число копируемых байт, если не известна длина объекта.

suffix-byte-range-spec = "-" suffix-length
suffix-length = 1*DIGIT

Спецификация suffix-byte-range-spec используется для задания суффикса тела объекта с длиной, заданной значением suffix-length. (То есть, эта форма специфицирует последние N байтов тела объекта.) Если объект короче заданной длины суффикса, то в качестве суффикса используется все тело объекта.

Примеры значений byte-ranges-specifier (предполагается, что длина тела объекта равна 10000):

  • Первые 500 байтов (относительные позиции 0-499, включительно): bytes=0-499
  • Вторые 500 байтов (относительные позиции 500-999, включительно): bytes=500-999
  • Последние 500 байтов (относительные позиции 9500-9999, включительно): bytes=-500
или

bytes=9500-

  • Первые и последние байты (байты 0 и 9999): bytes=0-0,-1
  • Несколько легальных, но неканонических спецификаций вторых 500 байт (относительные позиции 500-999, включительно): bytes=500-600,601-999; bytes=500-700,601-999


RFC 2068