Re[28]: HTTP2
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 04.04.19 06:53
Оценка: -1
Здравствуйте, Ziaw, Вы писали:

I>>

I>>Final Takeaways
I>>Always concatenate files into several bundles


Z>Незачем было изображать ужа почти неделю, чтобы сказать, что ты с этим согласен.


Это было сказано ранее. Потому я предполагаю, что умеющий читать уже прочёл. А ты, похоже, особенный, для тебя надо персонально пересказывать.
Re[19]: HTTP2
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 04.04.19 12:20
Оценка: :)
Здравствуйте, Ziaw, Вы писали:

C>>2) Оно используется только для GET-ов.


Z>Интересно, а в каком месте это может стать проблемой?


Например HTTP POST download.
Re[20]: HTTP2
От: Ziaw Россия  
Дата: 05.04.19 14:52
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Например HTTP POST download.


Это что?
Re[21]: HTTP2
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 07.04.19 12:47
Оценка:
Здравствуйте, Ziaw, Вы писали:

I>>Например HTTP POST download.


Z>Это что?


Это download через POST реквест. Очень популярная вещь, вообще говоря. Отправляешь html,xml,json, а получаешь например pdf. Или, например, стейтлесс эндпоинт, куда ты отправляешь много данных в реквесте, и получаешь много данных в респонсе.
Отредактировано 07.04.2019 13:04 Pauel . Предыдущая версия .
Re[22]: HTTP2
От: Ziaw Россия  
Дата: 08.04.19 11:07
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Это download через POST реквест. Очень популярная вещь, вообще говоря. Отправляешь html,xml,json, а получаешь например pdf.


Зачем встраивать его в pipelining?

I>Или, например, стейтлесс эндпоинт, куда ты отправляешь много данных в реквесте, и получаешь много данных в респонсе.


POST в HTTP/REST используется для statefull операций, поэтому пайплайнинг для него отключили. Чисто из спортивного интереса мне захотелось узнать, в каком месте это может стать проблемой. Была гипотеза, что "HTTP POST download" это какой-то неизвестный мне термин, но после объяснения стало еще менее понятно.
Re[23]: HTTP2
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 08.04.19 11:35
Оценка:
Здравствуйте, Ziaw, Вы писали:

I>>Это download через POST реквест. Очень популярная вещь, вообще говоря. Отправляешь html,xml,json, а получаешь например pdf.


Z>Зачем встраивать его в pipelining?


Для больших pdf возможно и не нужно, но вот json — нужно, и вообще для мелочевки очень желательно.

I>>Или, например, стейтлесс эндпоинт, куда ты отправляешь много данных в реквесте, и получаешь много данных в респонсе.


Z>POST в HTTP/REST используется для statefull операций, поэтому пайплайнинг для него отключили. Чисто из спортивного интереса мне захотелось узнать, в каком месте это может стать проблемой. Была гипотеза, что "HTTP POST download" это какой-то неизвестный мне термин, но после объяснения стало еще менее понятно.


Тебе непонятно, что download реализуют не только через Get, но и Post ?

Предложи стейтлесс вариант АПИ для конверсии вида формат1 -> препроцессор -> формат2 -> постпроцессор
Re[24]: HTTP2
От: Ziaw Россия  
Дата: 10.04.19 05:10
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Для больших pdf возможно и не нужно, но вот json — нужно, и вообще для мелочевки очень желательно.


Есть соглашение, что POST не идемпотентен, пайплайнить такие операции чревато неприятными сюрпризами для разработчика бэкенда. Если пайплайнинг желателен — можно использовать PUT. Но обычно для мелочевки крайне желательно объединять ее в один запрос. Независимо от наличия пайплайнинга по ресурсам это будет намного менее затратно.

I>Тебе непонятно, что download реализуют не только через Get, но и Post ?


Мне непонятно, зачем применять слово download не по назначению. И непонятно, почему потребовался именно POST.

I>Предложи стейтлесс вариант АПИ для конверсии вида формат1 -> препроцессор -> формат2 -> постпроцессор


Конверсия операция идемпотентная, для таких операций в HTTP есть PUT. Это дает возможность софту понимать, что результат запроса можно смело закешировать и не дергать сервер лишний раз.
Re[25]: HTTP2
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 10.04.19 07:00
Оценка: :)
Здравствуйте, Ziaw, Вы писали:

I>>Для больших pdf возможно и не нужно, но вот json — нужно, и вообще для мелочевки очень желательно.


Z>Есть соглашение, что POST не идемпотентен, пайплайнить такие операции чревато неприятными сюрпризами для разработчика бэкенда. Если пайплайнинг желателен — можно использовать PUT. Но обычно для мелочевки крайне желательно объединять ее в один запрос. Независимо от наличия пайплайнинга по ресурсам это будет намного менее затратно.


Я не сильно глубоко знаю про http, какие именно сюрпризы надо ждать ?

I>>Тебе непонятно, что download реализуют не только через Get, но и Post ?

Z>Мне непонятно, зачем применять слово download не по назначению. И непонятно, почему потребовался именно POST.

Это устоявшаяся практика. Не я её изобрёл.

I>>Предложи стейтлесс вариант АПИ для конверсии вида формат1 -> препроцессор -> формат2 -> постпроцессор


Z>Конверсия операция идемпотентная, для таких операций в HTTP есть PUT. Это дает возможность софту понимать, что результат запроса можно смело закешировать и не дергать сервер лишний раз.


А вот и не верно. Поднастроил ты конвертор в админке, отправляешь тот же файл второй раз с теми же хидерами. Какой результат ждать ?
Re[22]: HTTP2
От: Sharowarsheg  
Дата: 10.04.19 08:17
Оценка:
Здравствуйте, CreatorCray, Вы писали:

N>>Ты не согласен с MSDN? Тогда покажи, где и почему они врут.

CC>Потому что функционал этот доступен (официально) с XP, а по факту как бы не с W2k

Я пользовался этим \\?\ в четвертой NT, и это уже было описано в MSDN.
Re[25]: HTTP2
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 10.04.19 08:19
Оценка:
Здравствуйте, Ziaw, Вы писали:

I>>Для больших pdf возможно и не нужно, но вот json — нужно, и вообще для мелочевки очень желательно.


Z>Есть соглашение, что POST не идемпотентен, пайплайнить такие операции чревато неприятными сюрпризами для разработчика бэкенда. Если пайплайнинг желателен — можно использовать PUT.


Для идемпотентности можно использовать uuid в запросе (самый простой, но вполне рабочий метод).
PUT честно пойдёт только если заранее знаешь/задаёшь постоянный id ресурса и сервер тебе доверяет в этом. Что в общем случае ой не.
А для POST этот id можно делать временным и специфичным для конкретного клиента (авторизационного токена или что там вместо него на этой неделе).

I>>Тебе непонятно, что download реализуют не только через Get, но и Post ?

Z>Мне непонятно, зачем применять слово download не по назначению. И непонятно, почему потребовался именно POST.

GET в принципе не допускает тело запроса. Поэтому если параметров URL не хватает, приходится извращаться.

I>>Предложи стейтлесс вариант АПИ для конверсии вида формат1 -> препроцессор -> формат2 -> постпроцессор


Z>Конверсия операция идемпотентная, для таких операций в HTTP есть PUT. Это дает возможность софту понимать, что результат запроса можно смело закешировать и не дергать сервер лишний раз.


PUT в этом смысле важен только для промежуточных прокси, а не для того сервера, что делает реализацию. Последний может проверить и другими методами.
The God is real, unless declared integer.
Re[26]: HTTP2
От: Ziaw Россия  
Дата: 10.04.19 08:50
Оценка: -1
Здравствуйте, netch80, Вы писали:

N>Для идемпотентности можно использовать uuid в запросе (самый простой, но вполне рабочий метод).


Можно конечно. Но ранее была гарантия, что запросы POST будут выстроены в очередь, то, что ее оставили — имхо, верно.

N>PUT честно пойдёт только если заранее знаешь/задаёшь постоянный id ресурса и сервер тебе доверяет в этом. Что в общем случае ой не.

N>А для POST этот id можно делать временным и специфичным для конкретного клиента (авторизационного токена или что там вместо него на этой неделе).
N>GET в принципе не допускает тело запроса. Поэтому если параметров URL не хватает, приходится извращаться.

Ни PUT ни POST сами по себе не требуют id ресурса. Если нужно тело запроса и pipelining — используем PUT, если нет выбираем в зависимости от других факторов.

N>PUT в этом смысле важен только для промежуточных прокси, а не для того сервера, что делает реализацию. Последний может проверить и другими методами.


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

Тут POST download приведен как сценарий в котором нам мешает отсутствие pipelining'а таких запросов в HTTP/2. Моя точка зрения, что в случае, когда мы делаем пачку последовательных POST запросов:

а) не стоит называть их download
б) либо они не идемпотентны и тогда их лучше не пайплайнить, либо они идемпотенты и тогда их стоит отправлять через PUT.
Re[26]: HTTP2
От: Ziaw Россия  
Дата: 10.04.19 08:59
Оценка: -1
Здравствуйте, Ikemefula, Вы писали:

I>Я не сильно глубоко знаю про http, какие именно сюрпризы надо ждать ?


Разработчик вправе ожидать, что POST запросы придут на бэкенд последовательно, в нужном порядке. Pipelining эту гарантию убирает.

I>Это устоявшаяся практика. Не я её изобрёл.


Ты ее применил. Вызов API через POST, который ты приводишь в качестве примера, это не download.

I>А вот и не верно. Поднастроил ты конвертор в админке, отправляешь тот же файл второй раз с теми же хидерами. Какой результат ждать ?


Это зависит от настроек кеширования. POST по стандарту не кешируют. Это глагол, который используют для гарантии соответствия порядка вызовов порядку выполнения.
Re[27]: HTTP2
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 10.04.19 09:52
Оценка:
Здравствуйте, Ziaw, Вы писали:

I>>Я не сильно глубоко знаю про http, какие именно сюрпризы надо ждать ?


Z>Разработчик вправе ожидать, что POST запросы придут на бэкенд последовательно, в нужном порядке. Pipelining эту гарантию убирает.


По моему, при разработке бакенда не надо делать никаких предположений вида "запросы придут последовательно"

I>>Это устоявшаяся практика. Не я её изобрёл.


Z>Ты ее применил. Вызов API через POST, который ты приводишь в качестве примера, это не download.


Ты снова злоупотребляешь телепатией. Я указал, а не применил. Разницу чувствуешь ?

Это называется download давным давно, достаточно погуглить по http post download

I>>А вот и не верно. Поднастроил ты конвертор в админке, отправляешь тот же файл второй раз с теми же хидерами. Какой результат ждать ?


Z>Это зависит от настроек кеширования. POST по стандарту не кешируют. Это глагол, который используют для гарантии соответствия порядка вызовов порядку выполнения.


Если "зависит от настроек кеширования", то в этом случае кеш у тебя стал стейтфул сущностью, что уже само по себе проблема. А вот пользователь ожидает, что после изменения настроек он получит ответ с уже примененными настройками.
Re[28]: HTTP2
От: Ziaw Россия  
Дата: 10.04.19 10:19
Оценка: -1
Здравствуйте, Ikemefula, Вы писали:

I>По моему, при разработке бакенда не надо делать никаких предположений вида "запросы придут последовательно"


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

I>Ты снова злоупотребляешь телепатией. Я указал, а не применил. Разницу чувствуешь ?


Не чувствую.

I>Это называется download давным давно, достаточно погуглить по http post download


И что же показывает твой гугл? Мой показывает ссылки:

Is it possible to download a file with HTTP POST? — Stack Overflow
HTTP Download of large file with POST-Request — Chilkat Forum
Downloading a file via HTTP post and HTTP get in C# — Techcoil Blog
File download using HTTP request — Pulkit Goyal

Везде идет речь про скачивание файла и нигде нет твоего "устоявшегося" термина. Я не знаю, что это за практика и где ты ее нашел. Нигде не встречал, чтобы вызов API через POST назывался http POST download. Для чего ты сейчас настаиваешь на его употреблении?

I>Если "зависит от настроек кеширования", то в этом случае кеш у тебя стал стейтфул сущностью, что уже само по себе проблема. А вот пользователь ожидает, что после изменения настроек он получит ответ с уже примененными настройками.


Не получится выбрать потенциально кешируемый метод и не зависеть от настроек кеширования. Я напомню с чего мы начали, я попросил пример, где нужен pipelining запросов POST. Ты приводишь примеры где POST не лучший выбор и меняешь требования на ходу. Сначала требуешь реализовать stateless сервис, потом требуешь чтобы он перестал быть stateless.
Re[29]: HTTP2
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 10.04.19 10:38
Оценка:
Здравствуйте, Ziaw, Вы писали:

I>>По моему, при разработке бакенда не надо делать никаких предположений вида "запросы придут последовательно"


Z>Почему? Не идемпотентные операциии должны приходить в нужном порядке, если на это нельзя рассчитывать, на бэкэнде придется городить очень сложные и хрупкие механизмы по искусственному выстраиванию этого порядка.


I>>Ты снова злоупотребляешь телепатией. Я указал, а не применил. Разницу чувствуешь ?

Z>Не чувствую.

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

I>>Это называется download давным давно, достаточно погуглить по http post download

Z>И что же показывает твой гугл? Мой показывает ссылки:

Z>Is it possible to download a file with HTTP POST? — Stack Overflow

Z>HTTP Download of large file with POST-Request — Chilkat Forum
Z>Downloading a file via HTTP post and HTTP get in C# — Techcoil Blog
Z>File download using HTTP request — Pulkit Goyal

Z>Везде идет речь про скачивание файла и нигде нет твоего "устоявшегося" термина.


То есть, "устоявшаяся практика" ты читаешь как "устоявшийся термин" ? Блеск!

Читаем вместе — почти все результаты с первой страницы про скачивание через метод Post по протоколу HTTP. Самая первая ссылка датирована еще 11м годом, а чуть дальше и вовсе 2006й год. Дальше, если ты не заметил, у первой ссылки есть кучка похожих, ровно про то же. Вот это и значит, что вещь уже давным давно известна и применяется.

I>>Если "зависит от настроек кеширования", то в этом случае кеш у тебя стал стейтфул сущностью, что уже само по себе проблема. А вот пользователь ожидает, что после изменения настроек он получит ответ с уже примененными настройками.


Z>Не получится выбрать потенциально кешируемый метод и не зависеть от настроек кеширования. Я напомню с чего мы начали, я попросил пример, где нужен pipelining запросов POST. Ты приводишь примеры где POST не лучший выбор и меняешь требования на ходу. Сначала требуешь реализовать stateless сервис, потом требуешь чтобы он перестал быть stateless.


Конверсия как была, так и осталась стейтлесс. А вот если добавить вещи типа "поставить на паузу", "продолжить", "повторить два предыдущих шага конверсии" — вот это будет стейтфул. И нигде ничего подобного я не просил.
Тебя не смущает, что у стейтлесс сервисов есть база данных, сторадж, и они от этого не перестают быть стейтлесс?
Отредактировано 10.04.2019 10:39 Pauel . Предыдущая версия .
Re[30]: HTTP2
От: Ziaw Россия  
Дата: 10.04.19 11:09
Оценка: -1
Здравствуйте, Ikemefula, Вы писали:

I>Если я указываю на существование некоего явления, из этого никак не следует, что у себя в проекте я сделал ровно то же.

I>А вот с твоей точки рения это одно и то же, потому как разницы, по твоим же словам, не чувствуешь.

Я не утверждал, что ты что-то применяешь в проекте. Речь шла про применение термина.

I>То есть, "устоявшаяся практика" ты читаешь как "устоявшийся термин" ? Блеск!


Если ты вводишь термин и на указание о его не соответствии говоришь, что это устоявшаяся практика, именно так и читаю.

I>Читаем вместе — почти все результаты с первой страницы про скачивание через метод Post по протоколу HTTP. Самая первая ссылка датирована еще 11м годом, а чуть дальше и вовсе 2006й год. Дальше, если ты не заметил, у первой ссылки есть кучка похожих, ровно про то же. Вот это и значит, что вещь уже давным давно известна и применяется.


Какая вещь известна и применяется? Если скачивание файлов, про которое говорит гугл, то зачем ему pipelining?

I>Конверсия как была, так и осталась стейтлесс. А вот если добавить вещи типа "поставить на паузу", "продолжить", "повторить два предыдущих шага конверсии" — вот это будет стейтфул. И нигде ничего подобного я не просил.

I>Тебя не смущает, что у стейтлесс сервисов есть база данных, сторадж, и они от этого не перестают быть стейтлесс?

Не вижу смысла обсуждать толкование stateless. Что именно ты понимаешь под термином "http post download" которому мешает отсутствие pipelining?
Re[19]: HTTP2
От: Ziaw Россия  
Дата: 10.04.19 11:19
Оценка:
Здравствуйте, ·, Вы писали:

·>Ну если только косвенно. Ничто не мешает поменять hg хранилище на аналогичное git (ну кроме разве что совместимости). Unix-way оно от этого не станет.


Тогда будет проще большинство операций делать простыми инструментами, которые заточены под конкретную мелкую задачу. Разработчики это быстро поймут и hg начнет двигаться в сторону unix-way. Вопрос не в количестве экзешников, а в универсальности элементарных операций.

И наоборот, когда разработка начинается с простых инструментов, структура хранилища проектируется так, чтобы им было удобно.
Re[3]: HTTP2
От: Somescout  
Дата: 10.04.19 12:37
Оценка:
Здравствуйте, Ikemefula, Вы писали:

_>>С такими то тестами можно получить любой желаемы эффект.


I>А что не так с тестами?


Синтетические сильно: сейчас большинство фреймворков по умолчанию дают упаковку скриптов и стилей (и в некоторых случаях изображений), так что во многих случаях получается 3-5 файлов (включая саму страницу). С другой стороны массовая загрузка библиотек скриптов идёт с CDN, Yandex, google и прочего — т.е. отдельные соединения ко множеству сайтов, и фичи HTTP2 не так уж заметны в этом случае (грузится малое количество файлов из большого количества источников). Ну и 1000 запросов это само по себе синтетика — нужно специально постараться чтобы получить подобное в реальном проекте.
ARI ARI ARI... Arrivederci!
Re[31]: HTTP2
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 10.04.19 13:46
Оценка:
Здравствуйте, Ziaw, Вы писали:

Z>Какая вещь известна и применяется? Если скачивание файлов, про которое говорит гугл, то зачем ему pipelining?


Ты похоже вообще не читаешь.

I>>Конверсия как была, так и осталась стейтлесс. А вот если добавить вещи типа "поставить на паузу", "продолжить", "повторить два предыдущих шага конверсии" — вот это будет стейтфул. И нигде ничего подобного я не просил.

I>>Тебя не смущает, что у стейтлесс сервисов есть база данных, сторадж, и они от этого не перестают быть стейтлесс?

Z>Не вижу смысла обсуждать толкование stateless. Что именно ты понимаешь под термином "http post download" которому мешает отсутствие pipelining?


Кейс — юзер жмет кнопку и у него в браузере показывается окошко "download". Щас, похоже, ты будешь неделю уточнять что это такое ?
  На всякий


Какой метод используется — по разному, чаще GET, но бывает и POST.

Теперь надо вспомнить историю веба. Поначалу всякие методы типа put, delete были дикой экзотикой и не проходили через промежуточные прокси и фаерволы.
Было два основных метода — get и post.
Post — через это работала самая обычная кнопка сабмит. Как закинуть файл на сервер ? Сабмит. Сабмит. Сабмит.
А как быть, если сервер не хранит промежуточное состояние, но надо реализовать навроде конвертора ? Сабмит. Сабмит. Сабмит. Сабмит. Сабмитаешь один файл, в респонсе получаешь другой.
Эта вещь такая же старая, как и весь интернет.

Почему нужен пайплайн — для тех же целей, что и в других случаях.

GEt имеет фундаментальное ограничение — в строку адреса и квери много не напихаешь. Как отсылать данные на сервер ? POST.

А если надо отослать данные на сервер и сразу принять их целую кучу ? Ну, скажем, обычный json из которого будет рендериться часть страницы на клиенте ? Делать два реквеста ? Зачем, если можно одним ?

Как реализовать функционал навроде конвертора если сервер не хранит промежуточное состояние ? POST.

Итого, основных вариантов http download всего два — get и post. Разница только в приседаниях со стороны браузера, для post надо делать дополнительные приседания, что бы вызвать то самое окошко.
Отредактировано 10.04.2019 13:55 Pauel . Предыдущая версия .
Re[4]: HTTP2
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 10.04.19 13:51
Оценка:
Здравствуйте, Somescout, Вы писали:

_>>>С такими то тестами можно получить любой желаемы эффект.


I>>А что не так с тестами?


S>Синтетические сильно: сейчас большинство фреймворков по умолчанию дают упаковку скриптов и стилей (и в некоторых случаях изображений), так что во многих случаях получается 3-5 файлов (включая саму страницу). С другой стороны массовая загрузка библиотек скриптов идёт с CDN, Yandex, google и прочего — т.е. отдельные соединения ко множеству сайтов, и фичи HTTP2 не так уж заметны в этом случае (грузится малое количество файлов из большого количества источников). Ну и 1000 запросов это само по себе синтетика — нужно специально постараться чтобы получить подобное в реальном проекте.


Понятно, что синтетические. Такие тесты показывают, за счет чего будет профит и где именно.

Во первых, до сих пор слишком часто пишут, что де ручной бандлинг уже анти-паттерн, что де http2 всё разрулит как надо, что его мультплексор сделает всё в лучшем стиле. Я одно время даже поверил, потому что это приводилось в одной из книг, что я читал.

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

Вот как то так.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.