+  HandyCache форум
|-+  Главная категория» Общие вопросы» Что такое Pipelining?
Имя пользователя:
Пароль:
Страниц: [1] 2 3  Все   Вниз
  Отправить эту тему    Печать  
Автор Тема: Что такое Pipelining?  (Прочитано 32567 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Сергей
Beta tester
*****

Репутация: +9/-2
Offline Offline

Сообщений: 621



« : 05 Апрель 2007, 10:45:26 »

Что нам даст эта фича?
И как ее тестировать?
Сообщить модератору   Записан
Rick
Администратор
*****

Репутация: +15/-1
Offline Offline

Сообщений: 868


WWW
« Ответ #1 : 05 Апрель 2007, 11:11:27 »

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

Тестировать - IE это не поддерживает, в Опере некий "интеллектуальный алгоритм" который сам определяет когда использовать pipelining, в FF это по дефолту отключено и включается опциями network.http.pipelining и network.http.proxy.pipelining

Цитировать
Что нам даст эта фича?
Теоретически экономию ресурсов, увеличение производительности и увеличение скорости. В общем сплошной шоколад. Теоретически.
Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #2 : 05 Апрель 2007, 11:32:51 »

Что нам даст эта фича?

Еще пара ссылок:
http://mozilla.org/projects/netlib/http/pipelining-faq.html
http://operawiki.info/HttpProtocol

Нам это даст поддержку преимуществ HTTP/1.1 - передачу на сервер сразу нескольких запросов в одном соединении, не дожидаясь ответов. Теоретически, это должно увеличить скорость загрузки страниц на медленных каналах и уменьшить количество TCP/IP пакетов (нагрузку на сеть).

Кроме того, это должно решить проблемы с путаницей картинок в FireFox и некоторые проблемы в Опере...
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +303/-14
Offline Offline

Сообщений: 5397



« Ответ #3 : 05 Апрель 2007, 11:47:47 »

Сергей
Наибольшую выгоду от Pipelining получат те, у кого время отклика составляет существенную часть от общего времени коннекта. В первую очередь, это обладатели спутникового интернета, потом DSL, потом Dial-Up.

PS Может, здесь и продолжим обсуждение тестирования поддержки Pipelining?
У меня сразу возник вопрос. В логе строки имеют теперь вид:
05.04.2007 11:37:11 # 493/519 >>> URL: http://handycache.ru/forum/Themes/SlickPro_Graphite/images/icons/folder_open.gif
Что означает 519 в # 493/519? Предполагаю, что это относится к Pipelining.
Сообщить модератору   Записан
Rick
Администратор
*****

Репутация: +15/-1
Offline Offline

Сообщений: 868


WWW
« Ответ #4 : 05 Апрель 2007, 12:01:30 »

Нам это даст поддержку преимуществ HTTP/1.1 - передачу на сервер сразу нескольких запросов в одном соединении, не дожидаясь ответов. Теоретически, это должно увеличить скорость загрузки страниц на медленных каналах и уменьшить количество TCP/IP пакетов (нагрузку на сеть).
Не все так радужно. Поскольку ответы сервер должен давать в строго той же последовательности как получались запросы, один затормозивший запрос тормозит все последующие в "пачке".

Что означает 519 в # 493/519?
Это номер строки в Мониторе.
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +303/-14
Offline Offline

Сообщений: 5397



« Ответ #5 : 05 Апрель 2007, 14:11:43 »

Это номер строки в Мониторе.
Переформулирую: что означает написание через дробь 493/519? Значит ли это, что данная строка лога относится к строке монитора 519 и этот файл получен по Pipeline в рамках одного соединения после файла, обозначенного в 493 строке монитора?
Сообщить модератору   Записан
Rick
Администратор
*****

Репутация: +15/-1
Offline Offline

Сообщений: 868


WWW
« Ответ #6 : 05 Апрель 2007, 14:43:32 »

Значит ли это, что данная строка лога относится к строке монитора 519
Да.

Цитировать
и этот файл получен по Pipeline в рамках одного соединения после файла, обозначенного в 493 строке монитора?
Не так. В твоем примере 493 - номер соединения. 519 - номер строки в Мониторе. Если в рамках одного соединения было сделано несколько запросов то будет, например, 493/519 и 493/524.
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +303/-14
Offline Offline

Сообщений: 5397



« Ответ #7 : 09 Апрель 2007, 21:06:50 »

На мой взгляд, pipelining не будет полноценно использоваться, пока НС не начнет возвращать "HTTP 1.1" в собственных ответах (в тех, где сервером значится HandyCache). Мы должны возвращать клиенту максимально поддерживаемую нами подверсию HTTP (т.е. HTTP 1.1).
Сейчас происходит так. Опера запоминает, что запрошенный хост (а на самом деле НС) отвечает HTTP 1.0, и запоминает его как неподдерживающий HTTP 1.1 и соответственно pipelining. В итоге в процессе следующих обращений к этому хосту pipelining Опера не инициирует.
Сообщить модератору   Записан
Rick
Администратор
*****

Репутация: +15/-1
Offline Offline

Сообщений: 868


WWW
« Ответ #8 : 09 Апрель 2007, 22:07:23 »

Имхо еще бы необходима собственно опция включающая/отключающая Pip в HC.
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +303/-14
Offline Offline

Сообщений: 5397



« Ответ #9 : 09 Апрель 2007, 22:47:28 »

Еще мне кажется, ничего положительного в поддержку pipeline не привносят формируемые НС заголовки Proxy-Connection.
Насколько я знаю, это изобретение Netscape не регламентировано никакими стандартами и применяется (применялось) только в нетскейповских браузерах. Стандартом HTTP определен заголовок Connection, который обязан понимать любой клиент. С учетом этого предлагаю не использовать Proxy-Connection.
Как работать с заголовком Connection, постараюсь изложить позже.
Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #10 : 09 Апрель 2007, 23:25:50 »

Сейчас происходит так. Опера запоминает, что запрошенный хост (а на самом деле НС) отвечает HTTP 1.0, и запоминает его как неподдерживающий HTTP 1.1 и соответственно pipelining.

В каких ответах HC сейчас формирует HTTP/1.0 ? Вроде, везде HTTP/1.1...

Цитировать
Насколько я знаю, это изобретение Netscape не регламентировано никакими стандартами и применяется (применялось) только в нетскейповских браузерах.

Однако, великий и всемогущий IE тоже использует заголовок Proxy-Connection...
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +303/-14
Offline Offline

Сообщений: 5397



« Ответ #11 : 09 Апрель 2007, 23:38:40 »

В каких ответах HC сейчас формирует HTTP/1.0 ? Вроде, везде HTTP/1.1...
Если запрос HTTP 1.0, то, собственно, во всех без исключения (по крайней мере, у меня): 304, 403, 404, 430, 200 (НС).
Цитировать
Однако, великий и всемогущий IE тоже использует заголовок Proxy-Connection...
А где он описан? Когда и как его надо использовать? Почему/для каких целей его использует НС?
Я этого за IE не замечал.
« Последнее редактирование: 09 Апрель 2007, 23:45:07 от Михаил » Сообщить модератору   Записан
mai62
Автор HC
*****

Репутация: +221/-4
Offline Offline

Сообщений: 6330


« Ответ #12 : 09 Апрель 2007, 23:49:21 »

Михаил
Цитировать
На мой взгляд, pipelining не будет полноценно использоваться, пока НС не начнет возвращать "HTTP 1.1" в собственных ответах (в тех, где сервером значится HandyCache).
Сейчас НС в своих ответах отдает то, что получает в запросах браузера.
Rick
Цитировать
Имхо еще бы необходима собственно опция включающая/отключающая Pip в HC.
И что должно происходит при включении/выключении этой опции?
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +303/-14
Offline Offline

Сообщений: 5397



« Ответ #13 : 09 Апрель 2007, 23:54:00 »

Сейчас НС в своих ответах отдает то, что получает в запросах браузера.
НС должен, на мой взгляд, и на запрос HTTP 1.0, и на 1.1 давать ответ HTTP 1.1. Этим НС сообщит браузеру, что он поддерживает 1.1. Имхо, исходя из этого ответа браузер (по крайней мере, Опера) будет в дальнейшем строить взаимоотношения с НС при обращении к тому же хосту.
Такой ответ, собственно, как мне помнится, определен стандартом и/или рекомендациями к нему. Если нужно, могу отыскать.
« Последнее редактирование: 10 Апрель 2007, 00:13:43 от Михаил » Сообщить модератору   Записан
Rick
Администратор
*****

Репутация: +15/-1
Offline Offline

Сообщений: 868


WWW
« Ответ #14 : 10 Апрель 2007, 00:06:44 »

И что должно происходит при включении/выключении этой опции?
Видимо должно выдаваться Proxy-Connection: Close? Радикальный, но не лучший способ. Улыбка

Суть в том, что у многих пользователей проблемы с pipelining'ом: в зависимости от удаленного сервера и от сереверов через которые осуществляется к ним доступ. Кроме того, некоторые программы с ним не дружат. В частности антивирус Касперского: на его форуме ответы от крайности "не поддерживает вообще", до самого оптимистичного из того, что было сказано: "с pipelining'ом будет намного медленнее, чем без него" (с) Global Moderator форума KAV.
Учитывая, что в Опере невозможно отключить пип без отключения http 1.1 желательно наличие такой опции в НС.
Сообщить модератору   Записан
mai62
Автор HC
*****

Репутация: +221/-4
Offline Offline

Сообщений: 6330


« Ответ #15 : 10 Апрель 2007, 00:31:47 »

Михаил
Цитировать
Если нужно, могу отыскать.
Нужно.
Rick
Цитировать
Видимо должно выдаваться Proxy-Connection: Close?
Тогда так и называть надо эту опцию - Persistent connection.
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +303/-14
Offline Offline

Сообщений: 5397



« Ответ #16 : 10 Апрель 2007, 00:33:49 »

mai62
Здесь.
Цитировать
An HTTP server SHOULD send a response version equal to the highest
   version for which the server is at least conditionally compliant, and
   whose major version is less than or equal to the one received in the
   request.
Сообщить модератору   Записан
mai62
Автор HC
*****

Репутация: +221/-4
Offline Offline

Сообщений: 6330


« Ответ #17 : 10 Апрель 2007, 00:45:18 »

Михаил
Хорошо, сделаю 1.1
Сообщить модератору   Записан
Rick
Администратор
*****

Репутация: +15/-1
Offline Offline

Сообщений: 868


WWW
« Ответ #18 : 10 Апрель 2007, 00:51:37 »

Тогда так и называть надо эту опцию - Persistent connection.
Я потому и говорю, что не лучший способ: Persistent connection хотелось бы наверное сохранить. А как разделить Persistent connection и Pipelining я не знаю/не разбирался.
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +303/-14
Offline Offline

Сообщений: 5397



« Ответ #19 : 10 Апрель 2007, 14:04:23 »

mai62
Тестирую сборку 21 с HTTP 1.1. Опера перестала закрывать соединение после каждого скачанного файла. Работа ускорилась. В общем, постоянные соединения наконец заработали!!!  Отлично!
Тем не менее, pipelining не наблюдается - НС шлет запрос по открытому соединению только после получения ответа на предыдущий запрос по этому соединению. Надо разбираться.
Как НС определяет, когда открывать новое соединение, а когда слать запрос по существующему?
Сообщить модератору   Записан
Страниц: [1] 2 3  Все   Вверх
  Отправить эту тему    Печать  

 
Перейти в: