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 був вже тоді!), правда, тільки для одного файлу.

COM_SPPAGEBUILDER_NO_ITEMS_FOUND