Client-pull-документы

Создать такой динамический документ относительно легко, и выполнять его вы можете без какого бы то ни было HTTP-сервера. Дело в том, что документ этого типа заставляет броузер запросить и загру-зить другой документ, например хранящийся локально. Все, что для этого нужно, – это включить в заголовок вашего HTML- или XHTML-документа тег . Этот специальный тег предлагает броузеру отображать текущий документ в течение указанного периода времени, а затем загрузить и отобразить новый документ, точно так, как если бы пользователь выбрал новый документ при помощи гиперссылки.

Заголовок Refresh
Client-pull динамические документы работают со всеми популярными броузерами, поскольку эти броузеры реагируют на специальное поле HTТP-заголовка, именуемое Refresh (Обновить).

Вы, возможно, помните из наших предыдущих обсуждений, что когда бы HTTP-сервер ни посылал броузеру клиента документ, он предпосылает данным документа одно или несколько заголовочных полей. Одно заголовочное поле, например, содержит описание типа содержимого документа, используемое броузером при решении вопроса, как следует
отображать содержимое документа. HTML-документам, например, сервер предпосылает заголовок Content-type: text/html, значение которого совершенно очевидно: он указывает, что содержимое документа будет передаваться текстом и интерпретировать его надо как HTML-документ.

Как мы долго обсуждали в главе 6 «Гиперссылки и Сети», можно добавить к HTTP-заголовку HTML-документа особые поля, вставляя в заголовок () документа тег .

HTTP-поле Refresh организует Client-pull динамический HTML-документ, включаемый тегом следующего формата:


Атрибут http-equiv предписывает HTTP-серверу включить в последовательность заголовков, отправляемую им броузеру клиента непосредственно перед отправкой остального содержимого документа, поле Refresh (обновить), которому присваивается значение, указываемое в атрибуте content (как всегда, заботливо заключенное в кавычки).


Броузер интерпретирует заголовок Refresh в качестве признака динамического
HTML-документа и реагирует так, как это описано ниже.

Значение поля Refresh
Значением атрибута content в теге Refresh определяется, как и когда броузер обновляет текущий документ. Присвойте ему целое значение и броузер отложит автоматическую загрузку нового документа на это число секунд. Вы можете присвоить ему нулевое значение, означающее отсутствие задержки. В этом случае броузер загружает следующий документ сразу после того, как закончит вывод текущего до-кумента, в результате чего вы можете получить очень грубую анимацию.

Обновление текущего документа
Если значение поля Refresh, указанного в content, это просто число секунд, броузер будет заново загружать текущий документ снова и снова, выдерживая указанный временной интервал между циклами, до тех пор, пока пользователь не перейдет к другому документу или не закроет броузер.

К примеру, броузер будет перегружать следующий Client-pull-документ каждые 15 секунд:



Цены на рынке кумкватов


Цены на рынке кумкватов



Текущие торги кумкватов проходят по $1.96 за фунт.




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

Обновление при помощи другого документа
Вместо того чтобы раз за разом загружать один и тот же документ, можно предписать броузеру динамически загрузить другой документ.


Это делается путем добавления абсолютного URL этого документа через точку с запятой после времени задержки в атрибуте content тега . Например:

content="15; URL=http://www.kumquat.com/next.html">
повлечет за собой то, что броузер будет должен получить документ next.html с сервера www.kumquat.com, продержав на экране текущий документ в течение 15 секунд.

Зацикливание документов
Имейте в виду, что действие тега Refresh относится только к тому документу, в котором он появился. Поэтому, чтобы создать цикл, содержащий несколько документов, нужно включить тег Refresh в каждый из них. Для достижения такого эффекта укажите в ка-честве значения атрибута content в каждом документе абсолютный URL, указывающий на следующий документ, тогда как последний документ должен указывать на первый, чтобы замкнуть цикл.

К примеру, ниже следуют теги для заголовков каждого из трех замкнутых в цикл HTML-документов. Документ first.html содержит:

content="30; URL=second.html">
Документ second.html содержит:

content="30; URL=third.html">
И третий документ содержит в своем заголовке (не считая других безумных мыслей):

content="30; URL=first.html">
Если оставить броузер в покое, он будет бесконечно крутиться между этими тремя документами с 30-секундным интервалом.


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

Чтобы вернуться к циклу страниц-приманок, каждый документ в остальной части коллекции киоска должен содержать свое поле Refresh, которое в конце концов указывает на приманку. Для страниц, не входящих в приманку, следует указать гораздо больший интервал времени – от 120 до 300 секунд или даже больше, – чтобы киоск не обновлялся автоматически, когда пользователь читает текущий документ.

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

Получение содержимого, отличного от HTML
Client-pull-возможности Netscape и Internet Explorer не ограничиваются HTML-документами, хотя, конечно, легче всего создать динамический документ при помощи HTML. Используя совсем небольшое усилие по программированию со стороны сервера, можно добавить поле Refresh в HTTP-заголовок документа любого типа, включая изображения, аудиофайлы и видеоклипы.

Например, создайте видеопоток, добавляя заголовочное поле Refresh к каждому из последовательных изображений, полученных с видеокамеры и затем оцифрованных. Включите нулевую задержку и URL, указывающий на следующее изображение, так что, как только броузер выведет одно изображение, он начнет получать следующее. Если сеть работает хорошо, результатом будет грубое (очень грубое) TV.

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

Возможно, лучшим употреблением Client-pull-возможностей будет их сочетание с длинными мультимедийными документами, для отображения которых популярные броузеры используют специальные вспомогательные приложения. На многозадачных компьютерах, на которых стоят Linux или Windows, броузер загружает один документ, в то время как вспомогательное приложение проигрывает другой. Комбинируйте Client-pull-возможности с этой многозадачностью для улучшения исполнения мультимедийных документов. Чтобы не приходилось ожидать загрузки одного большого документа, такого как видео- или аудиофайл, прежде чем начать его проигрывать, разбейте его на фрагменты меньшего размера, чтобы каждый из них автоматически загружался вслед за предыдущим (при помощи заголовка Refresh).

Броузер будет проигрывать первый фрагмент во время загрузки следующего, затем третьего, затем четвертого и т. д.

Комбинирование поля Refresh с другимиполями заголовка
Можно заставить Client-pull-документы выполнять некоторые изящные трюки, комбинируя эффекты поля Refresh и других полей HTTP-заголовка. Одна комбинация полезна особенно – поле Refresh с полем Redirect.

Поле Redirect позволяет серверу предложить броузеру получить запрошенный документ в каком-то другом месте, указывая в сопровождающем поле значение URL этого места. Броузер клиента автоматически перенаправляет свой запрос по новому URL и получает документ из другого места, обычно не уведомляя об этом пользователя. Мы можем
все время получать перенаправленные документы и не замечать этого. Самая обычная причина перенаправления состоит в том, что собрание HTML-документов переместилось в новый каталог или на новый сер-вер. В качестве любезности вебмастер программирует свой прежний сервер так, чтобы тот отправлял HTTP-заголовок, включающий поле Redirect и новый URL (но не включающий тела документа), всякому броузеру, запрашивающему документ по его прежнему адресу. Таким образом, новое расположение документа оказывается доступным пользователям, и им не приходится обновлять закладки своего броузера.

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

Один из способов оповестить пользователей о новом местоположении состоит в том, чтобы URL перенаправления стал указывать на HTML-документ, не являющийся домашней страницей новой коллекции, а содержащий информацию о новом местоположении. Однажды уведомленные, пользователи затем выберут гиперссылку «Продолжить», ведущую к новому расположению домашней страницы, и соответственно установят свои закладки.

Комбинируя поля Redirect и Refresh, можно заставить этот документ с объявлением автоматически переходить к новой странице. Если броузер получает HTTP-заголовок с обоими полями, он учтет их оба – он немедленно отправится по перенаправленному URL и отобразит его, а также установит таймер обновления и URL замещающего документа, если они указаны. Когда время выйдет, броузер автоматически перейдет по следующему URL, указывающему на новое расположение вашей домашней страницы.

Генератор случайных URL
Другим приложением сочетания полей Redirect и Refresh HTTP-заголовка является случайное блуждание по URL. Вам понадобятся некоторые навыки в программировании для создания приложения со стороны сервера, которое выбирает случайный URL из заранее заготовленного списка и выводит поле Redirect, указывающее на этот URL, и поле Refresh, которое после некоторой задержки снова обращается к приложению, выдающему случайные URL.

Когда броузер получит полный заголовок, он немедленно загрузит и отобразит случайно выбранный документ, указанный в URL поля Redirect. Подождав указанное в поле Refresh время, броузер вернется к генератору случайных URL на сервере (как это указано в Refresh URL), и цикл начнется заново. Результат состоит в бесконечном цикле случайных URL, отображаемых с регулярным интервалом.

Соображения об эффективности
Документы, запрашиваемые клиентом (client-pull documents, или CP-документы), потребляют лишние сетевые ресурсы, особенно когда интервал между обновлениями мал, поскольку каждое обновление может требовать совершенно нового соединения с сервером. Броузеру мо-жет понадобиться несколько секунд, чтобы соединиться с сервером и начать получение документа. В результате быстрое обновление обычно оказывается недостижимым, особенно при медленном сетевом соединении. Используйте Client-pull-документы для редко происходящих обновлений целого документа или для циклического перехода между документами, не требующего вмешательства пользователя.

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела HTML на эту тему:
SP-документы
Обзор динамических документов

Вернуться в раздел: HTML / 13. Динамические документы