Без загрузки, 100% локально, без аккаунта

Статья

Что такое клиентская обработка?

Большинство инструментов для работы с файлами отправляют документ на удалённый компьютер, который выполняет всю тяжёлую работу и возвращает результат. Клиентская обработка работает иначе: вашу работу выполняет ваш браузер, и файл никогда не покидает ваше устройство.

Два способа работы инструмента: ваша машина или чужая

При серверной обработке загрузка файла напоминает сдачу вещей в химчистку: вы передаёте их, удалённая машина занимается делом, вы забираете результат позже. Клиентская обработка больше похожа на стирку дома. Инструмент запускается прямо во вкладке браузера, читает файл из памяти, обрабатывает его и отдаёт вам результат, и всё это без передачи файла по сети. Сайту нужно лишь один раз доставить код обработки. После этого всё происходит на вашей стороне.

Что WebAssembly дал браузерам

Долгое время браузеры могли выполнять только JavaScript, который хорош для интерфейсов, но слишком медленен для таких задач, как перекодирование видео или сжатие большого изображения. WebAssembly (обычно сокращается до WASM) изменил это. Это компактный бинарный формат, который браузеры могут выполнять с почти нативной скоростью: код, изначально написанный на C или C++, компилируется в WASM и запускается во вкладке браузера без каких-либо плагинов. Те же кодеки и библиотеки сжатия, что стоят за десктопным ПО, теперь работают прямо на странице. JavaScript и WebAssembly работают вместе: JavaScript отвечает за интерфейс и управление, а WASM берёт на себя вычисления.

Что происходит во время выполнения задачи

Когда вы перетаскиваете файл в клиентский инструмент, страница загружает небольшой движок обработки (чаще всего WASM-модуль), если он ещё не загружен, а затем передаёт ему файл через JavaScript. Сама обработка обычно выполняется в фоновом потоке, называемом Web Worker, что позволяет интерфейсу браузера оставаться отзывчивым. Вы можете в любой момент открыть вкладку «Сеть» в браузере: ни один запрос с вашим файлом там не появится. Результат собирается в памяти и предлагается вам для скачивания.

Честные компромиссы, о которых стоит знать

При первом использовании инструмента с большим WASM-движком браузер загружает этот движок и кэширует его. При последующих использованиях загрузка пропускается, и инструмент работает полностью офлайн. Поскольку обработка выполняется на вашем устройстве, очень большой файл потребует столько времени, сколько позволяют ваш процессор и оперативная память, и дата-центр справился бы с некоторыми тяжёлыми задачами быстрее. Но взамен вы получаете реальную ценность: файл никогда не передаётся, нет ожидания загрузки на медленных соединениях, и инструмент продолжает работать без интернета после первой загрузки.

Инструменты из этой статьи

Частые вопросы

Клиентская обработка автоматически означает конфиденциальность данных?

Клиентская обработка означает, что файл по своей природе не отправляется на сервер, именно это и обеспечивает конфиденциальность. Вы можете убедиться в этом сами: откройте вкладку «Сеть» в инструментах разработчика браузера во время обработки файла: ни один исходящий запрос не должен содержать данные вашего файла. Тем не менее разумно проверять, что конкретный инструмент действительно так работает, а не просто доверять этикетке.

Почему при первом использовании инструмент иногда работает медленнее?

При первом использовании браузеру нужно загрузить движок обработки (WASM-модуль), что может занять несколько секунд в зависимости от его размера и скорости вашего соединения. После этого движок кэшируется локально, так что последующие сессии запускаются мгновенно, и инструмент работает офлайн.