Инструмент отказывается принимать большой файл
Лимит зависит от того, где выполняется работа. Инструменты, которые считают в вашей вкладке, берут файлы до гигабайта: платите вы своей памятью, и брать за это чужие деньги не с кого. Маршруты, где работает серверная программа, ограничены пятьюдесятью мегабайтами, офисные конвертеры — двадцатью пятью, а разметка веб-страниц — десятью, потому что там платит общий процессор в Алматы.
Коротко о цифрах
- Клиентские инструменты
- до 1 ГБ на файл, обработка в вашей вкладке
- Изображения
- до 100 МБ на файл
- Маршруты с qpdf
- до 50 МБ: восстановление, оптимизация, пароль
- Офисные конвертеры
- до 25 МБ; разметка веб-страницы — до 10 МБ
- Расход памяти на страницу
- А4 при 300 точках на дюйм — около 8,7 Мпикс и 33 МБ
Какой лимит у какого инструмента
- До гигабайта: объединение, разделение, сжатие и остальные операции, целиком идущие в браузере.
- До ста мегабайт: инструменты для изображений — сжатие, обрезка и смена формата.
- До пятидесяти мегабайт: восстановление, оптимизация, установка и снятие пароля — всё, что выполняет серверная программа для работы с PDF.
- До двадцати пяти мегабайт: конвертеры офисных документов и обратный перевод PDF в текстовый редактор.
- До десяти мегабайт: разметка веб-страницы, где на вход подаётся не документ, а исходный код страницы.
Почему в браузере лимит выше, чем на сервере
Файл, который обрабатывается во вкладке, никуда не передаётся: он читается из вашей же памяти, и единственный расход — ваши мегабайты и ваше время. Ставить здесь жёсткое ограничение означало бы запрещать то, что вашему устройству по силам. Гигабайт — это верхняя отсечка от заведомых опечаток вроде выбранного не того файла, а не оценка возможностей.
Сервер устроен иначе. Он один, процессоров у него два, а запросов приходит сколько придёт, поэтому тяжёлые операции стоят в очереди и выполняются по одной. Пятьдесят мегабайт — граница, при которой очередь остаётся живой: один документ обрабатывается за секунды, а не за минуты, и не задерживает остальных. Размер проверяется до чтения тела запроса, чтобы не тратить память на то, что всё равно будет отвергнуто.
Размер на диске — не то же самое, что расход памяти
- Страница на время работы разворачивается в точки: лист А4 при трёхстах точках на дюйм — это 2480 на 3508 пикселей, около 8,7 миллиона точек и порядка 33 мегабайт.
- Сторона холста ограничена 4096 точками: А4 в это укладывается, а А3 пришлось бы делать вдвое шире, поэтому его разрешение автоматически снижается примерно до 248 точек на дюйм.
- Отсюда следствие: стостраничный текстовый документ в 20 мегабайт обрабатывается легче, чем десятистраничный скан в 300 мегабайт.
- Держать в памяти весь документ разом не требуется: страницы обрабатываются по очереди, и каждая освобождается сразу после своей итерации.
- Итоговый файл собирается в памяти целиком, поэтому пиковый расход всегда выше, чем размер одной страницы.
Что делать с большим документом
- Разделите его на части: разделение само по себе укладывается в лимит и отдаёт результат одним архивом.
- Работайте с частями по очереди, а не открывайте несколько вкладок одновременно.
- Для серверных операций сначала уменьшите файл в браузере, потом отправляйте на маршрут с ограничением в пятьдесят мегабайт.
- Тяжёлые документы обрабатывайте на компьютере, а не на телефоне: у настольного браузера потолок памяти вкладки заметно выше.
- Проверьте, что размер вообще имеет отношение к делу: отказ по типу файла и отказ по размеру выглядят по-разному и говорят разное.
Частые вопросы
Почему сжатие принимает гигабайт, а восстановление только пятьдесят мегабайт?
Сжатие считает в вашей вкладке и расходует вашу память, а восстановление запускает программу на общем сервере. Второе оплачивается общей очередью, поэтому граница там во много раз ниже.
Файл меньше лимита, но инструмент всё равно не справляется. Почему?
Потому что предел здесь не размер на диске, а память при работе. Десять страниц огромного скана разворачиваются в точки тяжелее, чем сотня страниц текста, и упираются в потолок вкладки раньше.
Как уменьшить документ, если он не проходит по размеру никуда?
Разделите его на части — это единственная операция, которая не требует держать в памяти весь результат целиком. Дальше обрабатывайте части по очереди и при необходимости объедините обратно.
Лимит можно поднять, если очень нужно?
Серверные границы подняты быть не могут: за ними стоит одна машина с двумя процессорами и общая очередь на всех. Клиентский предел упирается в память вашего устройства и от наших настроек не зависит.