К обсуждениям

Fetch stream upload растит очередь в Safari Technology Preview 251: проверка backpressure

Редакция VOne Технологии

Fetch stream upload растит очередь в Safari Technology Preview 251: проверка backpressure. Практическая проверка Safari Technology Preview 251: профиль «time × desiredSize × pulls × queued bytes × server reads × abort cleanup», обратимый canary и ясный критерий остановки.

Симптом и граница backpressure при загрузке streaming request body через fetch()

Вопрос здесь один: как проверить fetch upload stream backpressure в safari technology preview 251. Наблюдаемое расхождение — производитель ReadableStream продолжает создавать chunks быстрее, чем сеть принимает upload, и очередь растёт. Название новой возможности не равно диагнозу: сначала нужны один повторяемый fixture и пара expected/actual. Граница наблюдения записывается как «event start → transition state → completion → released listener». Любая другая ошибка остаётся за пределами этого URL.

Два первичных источника для 318236@main

Официальная страница WebKit датирована 26 августа 2026 года, описывает Release 251 и в соответствующей строке называет backpressure при загрузке streaming request body через fetch(). Эта строка ссылается на 318236@main, первичную запись изменения в репозитории WebKit. Это подтверждает границу функции в Technology Preview, но не подтверждает ни конкретный сбой сайта, ни поведение stable Safari. Поисковый сниппет и community reply в этот слой доказательств не входят.

Поля контроля: профиль «time × desiredSize × pulls × queued bytes × server reads × abort cleanup»

Базовый набор для этой задачи: desiredSize, pull count, chunk size, bytes produced, bytes accepted тестовым endpoint и время abort. Поле «desiredSize»: не восстанавливайте по памяти; его значение не подменяет соседнюю колонку. Поле «pull count»: снимите до опыта; его значение не подменяет соседнюю колонку. Поле «chunk size»: сопоставьте с контролем; его значение не подменяет соседнюю колонку. Поле «bytes produced»: пометьте observed или unknown; его значение не подменяет соседнюю колонку. Поле «bytes accepted тестовым endpoint»: повторите после отката; его значение не подменяет соседнюю колонку. Поле «время abort»: не восстанавливайте по памяти; его значение не подменяет соседнюю колонку. Время, точная сборка и одинаковый fixture нужны для повтора, но имена, IP, cookie, токены, полные URL с query и содержимое рабочих данных не собираются.

Обратимый опыт для backpressure при загрузке streaming request body через fetch()

Одиночный canary: отправить ограниченный синтетический stream на локальный медленный endpoint, записать pull и desiredSize, затем abort и удалить fixture. До воздействия запишите исходную строку, после — только заранее выбранные поля, затем верните исходное состояние и повторите то же наблюдение. Ограничьте число chunks и общий объём до начала запроса. desiredSize, pull count, произведённые и принятые bytes снимайте по времени; только их совместная динамика показывает очередь. Abort и удаление fixture обязательны, а рост памяти выше заданной границы немедленно завершает опыт. Неоднозначный результат не расширяет эксперимент: он получает статус unknown.

Как принять решение: профиль «time × desiredSize × pulls × queued bytes × server reads × abort cleanup»

Практический итог — профиль «time × desiredSize × pulls × queued bytes × server reads × abort cleanup». Заполните в нём все предусмотренные поля. Если вход не принят, отметьте unsupported и сохраните прежний fallback. Если функция доступна, но боль «производитель ReadableStream продолжает создавать chunks быстрее, чем сеть принимает upload, и очередь растёт» не повторилась, результат равен not reproduced только для этого fixture. Локальное повторение после единственного изменения и успешный возврат дают reproduced. Неудачный возврат — stopped, а не предлог менять ещё одну переменную.

Красная линия и минимальный report 318236@main

Стоп-линия: не отправлять реальные файлы, не тестировать на внешнем сервисе и остановить опыт при неограниченном росте памяти. Для поддержки достаточно точной версии Technology Preview 251, коротких expected/actual, минимального fixture, шага возврата, профиль «time × desiredSize × pulls × queued bytes × server reads × abort cleanup» и ссылки на 318236@main. Перед передачей удалите локальные пути, дампы профиля, идентификаторы и любой реальный контент. Отчёт не обещает исправление и не переносит вывод на stable Safari.

Материал подготовлен редакцией VOne с помощью ИИ; границы фактов, дата, первичный WebKit commit, стоп-линия и роль community lead постатейно проверены 29 августа 2026 года.

Источники и проверка

Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.

Ответы

0 опубликовано
Ответов пока нет. Вы можете начать обсуждение.

Ваш ответ

Добавьте свой опыт или уточнение по теме.

Вы публикуете как Аноним Аватар отличает разговоры, но не раскрывает личные данные.

Ответ появится сразу. Не публикуйте личные данные, ключи и приватные ссылки.