Нарезка на чанки на клиенте
Браузер режет файл на чанки загрузки и считает хеш вне основного пути UI. Сервер проверяет каждый чанк до входа в хранилище, а потом собирает манифест, когда файл становится видимым.
Конвейер загрузки Cotton устроен так, что размер файла в основном меняет число чанков, а не форму проблемы с памятью. Вот разница между потоковым хранилищем и UI, который зависает на финализации.
Браузер режет файл на чанки загрузки и считает хеш вне основного пути UI. Сервер проверяет каждый чанк до входа в хранилище, а потом собирает манифест, когда файл становится видимым.
Знакомая боль: быстрая загрузка, а потом длинная фаза финализации на стороне сервера. Cotton сдвигает дорогую работу в инкрементальную работу с чанками, поэтому финальная видимая операция с файлом остаётся маленькой.
Сжатие и шифрование идут как потоковые стадии. Им не нужен весь файл в памяти перед полезной работой, и им не надо писать огромный временный объект открытого текста.
Даже протокольные загрузки через WebDAV попадают в ту же модель хранилища чанков. WebDAV PUT не такой возобновляемый, как родной чанковый протокол Cotton, но отдельный дизайн хранения целого файла ему не нужен.
На пути чтения идея та же: поток с произвольным доступом собирает байты из зашифрованных чанков. Скачивания, перемотка видео, извлечение превью и ответы HTTP Range не пересобирают целый объект заранее.
Это не только про гигантские файлы. Отказ от буферизации целого файла помогает обычным папкам, загрузкам со слабых устройств, развёртываниям на NAS, VM с малой памятью и многопользовательским инстансам под одновременной нагрузкой.
История без буферизации держится на нарезке на чанки на клиенте, хешировании в воркере, инкрементальной валидации на сервере, потоковом сжатии, потоковом AES-GCM, сборке манифеста и чтениях чанков с произвольным доступом для путей скачивания и превью.
Cotton считает большие файлы просто большим числом чанков, а не специальным аварийным путём. Это практическая разница между файловым облаком для архивов и продуктом, который хорошо выглядит только на маленьких загрузках.
Отсутствие буферизации целого файла не убирает все пределы развёртывания. Оператору всё ещё нужны вменяемые лимиты запросов, ёмкость хранилища, надёжность сети, совместимость браузеров и политика квот.
Архитектура «сначала чанки», поэтому очень большой файл — это больше чанков и манифест. Реальные пределы всё равно зависят от настроек развёртывания, поведения браузера, бэкенда хранения и условий сети.
Нет. WebDAV PUT — долгоживущий протокольный запрос, поэтому поведение при повторах уже, чем у родного чанкового протокола Cotton. Но после получения он всё равно входит в тот же чанковый конвейер хранения.
Да. Скачивания, превью, перемотка медиа, диапазонные запросы и чтения WebDAV собираются из чанков как потоки, а не через пересборку целого временного файла.