HTTP :: куда браузер отправляет запрос на получение файла, ожидает ли он ответа или отправляет запрос на следующий файл? - PullRequest
1 голос
/ 06 сентября 2010

Как работает HTTP-запрос: (если у меня есть ошибка, пожалуйста, напишите)

  1. тип пользователя в браузере http://www.website.com
  2. сервер отправляет ему html-страницу со ссылками на файлы изображений + css + js
  3. браузер читает html и, где включен файл images / css / js, отправляет http запрос на получение файла

где браузер отправляет запрос на получение файла, ожидает ли он ответа или отправляет запрос на следующий файл?

Спасибо

Ответы [ 2 ]

3 голосов
/ 06 сентября 2010

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

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

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

Запросы в очереди, которые уже были в этой же очереди(например, если страница использует одно и то же изображение более одного раза), сразу будет использоваться один и тот же объект (следовательно, если URI возвращает случайное изображение, но вы используете его более одного раза на одной странице, вы получите одно и то же изображение).

Запросы будут обрабатываться немедленно, поэтому в случае веб-сервера загрузка изображений, CSS и т. Д. Начнется до того, как HTML завершит рендеринг или действительно завершит загрузку.

Запросы дляодин и тот же домен с тем же протоколом (HTTP или HTTPS) будет конвейерным, используя уже использованное соединение, а не открывая новое.

Запросы обрабатываются двумя способами: максимальное количество одновременныхзапросов к одному домену и общее максимальное количество одновременных запросов.

1 голос
/ 06 сентября 2010

Браузер обычно инициирует более одного сокета для целевого сервера и, таким образом, получает контент более чем в один сокет одновременно. Это можно объединить с HTTP Pipelining (о чем вы спрашиваете), когда браузер отправляет несколько запросов в один сокет, не ожидая каждого из их ответов.

Со страницы Википедии:

HTTP-конвейеризация - это методика какие несколько HTTP-запросов выписан в одну розетку без в ожидании соответствующего ответы. Трубопроводы только поддерживается в HTTP / 1.1, а не в 1.0.

...