Отсутствует поддержка HTTP Range, невозможно возобновить загрузку файла

Discourse не поддерживает HTTP заголовок Range и всегда возвращает код ответа 200 OK вместо 206 Partial Content при загрузке файлов. Это неудобно для пользователей форума, так как при нестабильном интернет-соединении приходится скачивать файл целиком заново.

В теме Backup too big, is there a way to download it through "resume download" упоминалась эта проблема в случае загрузки резервной копии, однако она также касается обычной загрузки файлов, когда не используется хранилище S3.

Я проверил конфигурацию прокси-сервера nginx, и проблема не в ней. Заголовок Range корректно передаётся на localhost:3000 для запросов к /uploads/short-url/, но Discourse не обрабатывает его.

Поскольку HTTP Range является одной из базовых функций HTTP, я классифицировал это как «ошибку» (bug), а не как «новую функцию» (feature).

P.S. Здесь, на meta.discourse.org, проблема не воспроизводится, так как там используется хранилище S3.

2 лайка

Это обрабатывается здесь:

Добавление поддержки диапазонов вполне возможно, но потребует использования send_data, чтения файла с диска и отправки диапазона:

Честно говоря, это немного слишком запутанно.

1 лайк