Правильно ли говорить, что веб-браузер всегда знает, когда веб-страница полностью загружена? - PullRequest
0 голосов
/ 09 апреля 2011

Браузер отправляет GET-запрос на статическую веб-страницу на сервер.Сервер отправляет ответ HTTP OK с HTML-страницей в теле HTTP.Просматривая поле Content-Length или ищущий завершающий блок или какой-либо другой разделитель для некоторой другой кодировки, браузер может узнать, получил ли он веб-страницу и впоследствии все свои встроенные объекты (изображения и т. Д.).Правильно ли говорить, что в этом случае браузер всегда знает, когда веб-страница полностью загружена и что он больше не будет видеть сетевой трафик?

Теперь, если страница динамическая (скажем, Facebook или Gmail),где вы можете получать уведомления или части страницы обновляются с помощью AJAX или javascript, работающего в фоновом режиме, здесь также браузер должен знать, когда страница загружена.Что делать, если сервер отправляет некоторые обновления клиенту.Возможно ли в этом сценарии, чтобы браузер знал, когда он получил полное обновление?

Итак, есть ли сценарий, в котором браузер не знает, когда он полностью получил данные (статические или динамические)?) он запросил с веб-сервера или принудительные обновления, которые сервер пересылает на него?

Ответы [ 3 ]

1 голос
/ 09 апреля 2011

Я могу только представить (для статического случая) один сценарий, когда Content-Length не установлен.Не обязательно отправлять его на сервер.

Потенциально, конечно, на странице, содержащей сценарии, могут быть и другие сценарии, в которых сценарий загружает фрагменты по одному с задержками (включая сценарий AJAXты упомянул).Таким образом, браузер не будет знать заранее.В таком случае он будет «на данный момент» знать, что страница полностью загружена, но следующее действие из сценария снова лишит законной силы это утверждение.

0 голосов
/ 10 января 2013

Бывают случаи, когда на сервере используется какая-то технология push , например Comets. В этом случае запрос (обычно Ajax-запрос) отправляется без получения какого-либо ответа (также, конечно, без заголовков HTTP), но оставляя соединение TCP открытым. Это может занять много времени, но все же может рассматриваться как подкатегория вызовов Ajax.

Другой случай - технология HTML5 WebSocket. В WebSocket серверная сторона может передавать данные на клиентскую сторону без явного запроса со стороны клиента.

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

0 голосов
/ 09 апреля 2011

Вам не нужен AJAX, чтобы попасть в ситуацию, когда не все элементы на странице загружаются даже после загрузки самой страницы. Небольшой javascript - это все, что вам нужно (прошло некоторое время с тех пор, как я в последний раз работал с JS, могут быть некоторые синтаксические ошибки)

image

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