Я не смог найти этот RF C, и мне интересно, есть ли какие-либо правила относительно того, как запросы ресурсов от клиента HTTP / 2 отображаются в потоки HTTP / 2.
Это так? один-к-одному, где каждый поток представляет данные для одного запроса ресурса (например, изображения, js, html) или можно использовать один поток для передачи нескольких ресурсов?
От HTTP / 2 RF C:
Мультиплексирование запросов достигается при наличии каждого обмена запросами / ответами HTTP, связанного с его собственным потоком (раздел 5).
, а также позже :
Идентификаторы потока нельзя использовать повторно.
Что касается ваших следующих вопросов:
Чем потоковые приоры отличаются от потоковых зависимостей (для меня оба напрямую влияют на конечный порядок поиска ресурсов)?
Они являются частью той же схемы приоритизации. Зависимости позволяют отправлять определенные ресурсы в предпочтение другим, тогда как взвешивание приоритетов позволяет отправлять ресурсы одновременно, но взвешивать для пропорционального распределения большей доступной полосы пропускания некоторым ресурсам.
Существуют ли какие-либо общие стратегии, как браузеры обрабатывают потоки и зависимости потоков?
Все они обрабатывают потоки одинаково, но зависимости обрабатываются совершенно по-разному.
Chrome часто использует зависимости и создает длинную цепочку для отдельных зависимостей, которые должны быть разрешены в порядке, где это возможно. Ресурсы с более высоким приоритетом добавляются далее по цепочке. Chrome не использует взвешивание a.
Safari делает обратное и отправляет все запросы без зависимостей, но с соответствующим взвешиванием.
Firefox создает сложное дерево зависимостей, используя как весовые коэффициенты, так и зависимости.
Old Edge не устанавливает приоритеты, поэтому использует HTTP / 2 по умолчанию одинаково взвешенных ресурсов без каких-либо зависимостей. New Edge основан на Chrome, поэтому из этого следует, что
Обычно считается, что Chrome обычно лучше, но страдает при загрузке ресурсов, которые лучше загружать параллельно (например, изображения - особенно прогрессивные JPEG). Firefox здесь лучше, но чуть менее оптимален для ресурсов, которые необходимо загрузить полностью (например, критические CSS и JS). Safari только хорошо и обычно хуже, чем оба. И старый Эдж был абсолютным худшим. Это хороший разговор о состоянии дел: https://m.youtube.com/watch?v=sgjxuhFQktE
Для HTTP / 3 они хотят изменить свою сложную модель. Хороший разговор об этом здесь: https://m.youtube.com/watch?v=nH4iRpFnf1c&feature=youtu.be