Основной вопрос заключается в использовании заголовков HTTP, в том числе Range, If-Range, Accept-Ranges и определяемый пользователем спецификатор диапазона.
Вот пример производства, который поможет проиллюстрировать мой вопрос. Предположим, у меня есть приложение стиля Web 2.0, которое отображает какие-то человекочитаемые документы. Эти документы редакционно разбиты на страницы (похожие на статьи, которые вы видите на новостных сайтах). Для этого примера предположим:
- Существует документ под названием "HTTP Range Question", разбитый на три страницы.
- Страница оболочки (
/document/shell/http-range-question
) знает метаинформацию о документе, включая количество страниц. - Первая читаемая страница документа загружается во время события загрузки страницы через ajax GET и вставлена на страницу.
- Элемент управления пользовательским интерфейсом, который выглядит как [1 2 3 Все], находится внизу страницы, и нажатие на номер отобразит эту читаемую страницу (также загруженную через ajax) и нажав кнопку "Все" отобразит весь документ. Предположим, что эти URLS для 1, 2, 3 и всех вариантов использования:
-
/document/content/http-range-question?page=1
-
/document/content/http-range-question?page=2
-
/document/content/http-range-question?page=3
-
/document/content/http-range-question
-
Теперь на вопрос. Могу ли я использовать заголовки HTTP Range вместо части URL (например, параметр querystring)? Возможно, что-то вроде этого в запросе GET /document/content/http-range-question
:
Range: page=1
Похоже, что спецификация только определяет диапазоны байтов как допустимые, поэтому даже если я сделал свои вызовы ajax с моим кодом браузера и сервера, все, что посередине, могло бы разорвать контракт (например, кеширующий прокси-сервер).
Range: bytes=0-499
Любые мнения или примеры реальных пользовательских спецификаторов диапазона?
Обновление. Я нашел аналогичный вопрос о заголовке Range (Paging в коллекции отдыха), где упоминается, что Dojo JsonRestStore использует собственное значение заголовка диапазона.
Range: items=0-24