1

У меня есть скрипт, который при доступе по протоколу HTTP отправляет некоторые данные, делает паузу на несколько секунд, а затем отправляет еще несколько данных, повторяя, пока все данные не будут отправлены.

Когда я получаю к нему доступ в curl , он ведет себя как ожидалось и отправляет данные по частям. Однако, если я пытаюсь получить доступ к странице в браузере, на экране ничего не отображается до тех пор, пока весь скрипт не завершит работу, через несколько секунд.

Вы можете наблюдать это поведение (временно), открыв URL

curl 'http://50.80.82.137:8000'

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

Каков источник этого поведения?


Он написан на NodeJS, и я поместил его на GitHub для справки. Тем не менее, в этом случае я предполагаю, что используемый язык не имеет значения (именно поэтому я спросил об этом в SuperUser вместо StackOverflow, и любой сценарий, имеющий "паузу" перед отправкой данных, будет вести себя аналогичным образом.

1 ответ1

2

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

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

Используйте инструменты на стороне клиента (Javascript, CSS и т.д.), Чтобы влиять на поведение на стороне клиента, а не на сетевой протокол.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .