Web Bundle — дело RarJPEG живет
На днях состоялся первый релиз набора инструментов для упаковки различных веб-ресурсов в один файл — Web Bundle. Принцип его работы точно такой же, как для ресурсов, включаемых в EXE файлы — произвольные файлы упаковываются в один файл-контейнер, а на клиентской стороне доступ к ним организуется по имени файла с помощью API. Только в данном случае в качестве контейнера используется изображение в формате PNG. Клиентская часть представляет из себя небольшую JS-библиотечку, позволяющую загружать, декодировать и извлекать отдельные файлы из таких ресурсов.Тут должна быть картинка с троллейбусом из буханки. Круто, но зачем?! Ведь все ресурсы прекрасно загружаются и без упаковки в контейнер, да еще и параллельно. Это вопрос неоднозначный. С одной стороны, загрузка ресурсов одним файлом может быть быстрее, чем даже параллельная загрузка множества мелких файлов, особенно на мобильном подключении с высокими задержками. С другой стороны, давно есть технологии для объединения однотипных ресурсов в один файл, таких как скрипты, таблицы стилей, иконки. Да и широкое распространение HTTP 2.0 в скором времени должно решить эту проблему. Но все же у Web Bundle есть некоторые преимущества.Универсальность. Упаковывать можно абсолютно любые файлы, вплоть до бинарных. На некоторых хостингах с ограничениями на MIME тип загружаемых файлов невозможно ни загрузить, ни отдать клиенту произвольный файл.
Быстрое декодирование. Формат PNG декодируется самим браузером, на выходе получается «изображение», которое визуально ничего осмысленного не несет и выглядит, как цветной шум. Вместо значений цветов пикселей находится содержимое файлов-ресурсов, которое извлекается клиентской библиотекой с помощью Canvas.
В этом изображении находятся три файла
Для удобства предусмотрены методы чтения ресурса как текста, как JSON объекта и как изображения.
Успех этой технологии будет зависеть от того, найдется ли ей реальное применение. Причем оно может оказаться самым разным. Например, может ли она быть использована для скрытой доставки malware на клиента? Наверное может. Но AV вендоры скорее всего отреагируют быстро и добавят соответствующий модуль распаковки и анализа. Так что для пользователей это не будет большой проблемой. А вот для всяких фото- и скриншот-хостингов может стать проблемой, если им придется сканировать все загружаемые пользователями файлы, это увеличит нагрузку на сервера.
UPD: Как подсказал iSage, эта идея уже была реализована в PNGfy в 2009 году (надо же, Canvas был уже тогда!), правда, только для одного файла.