Как уже сказали, GZIP можно и нужно использовать для уменьшения объема передаваемой информации. И ваш метед в этом слкчае не чуть не лучше, кроме случая если вы будете использовать более сильный алгоритм сжатия.
А задержки на переоткрытие кучи коннектов как раз и решает механизм повторного использования ТСР соединения для передачи всех фацлов. То есть утрировано к серверу откроется всего одно соединение по которому пеиедадутся все данные без переконнекта на каждый файл.
Подозреваю, что передать один файл вместо сотни будет в любом случае быстрее. Хотя сильно подозреваю, что это экономия на спичках и проблемы с архитектурой приложения.
В этом плане — согласен, хотя если на странице штук под 100 разного плана картинок, js'ок и css(к примеру, на моей странице вконтакте 106 запросов пришло) и посещаемость сайта хотя бы 1000 человек в день(даже если они открывают страницы 1 раз в день), то их
«Веб-сервер Apache
Статический сайт/контент (html, jpg/gif, …) 50 000 – 150 000»
Вроде у селектела очень гибкая тарификация в плане «платишь за потребление», где учитывается буквально всё.
Кроме того, спрайты, в частности, ещё и исправляют совсем некрасивые подзагрузки при наведении и прочих действиях.
+ время на открытие запроса на получение каждого файла в больших объёмах значительно увеличивает время загрузки. Выше написали про переиспользование коннекта, я об этом как-то не слышал раньше, нужно будет вникнуть подробнее.
Кстати, а подход с упаковкой в архив позволяет отказаться/уменьшить количество спрайтов. Да и подгружается сайт при медленном коннекте не рывками, а единовременно(если не паковать гигибайтное видео в тот же архив, конечно).
Хотя вот про реюз соединения тоже в 1 раз слышу, если он прост в использовании, то действительно является отличным решением.
Естественно, даже в тестовой версии сделал простенькое окно загрузки) И да, согласен с замечанием — применения загрузчика в итоге не дает разницы между обычной подгрузкой и подгрузкой 1 файлом.
… не стоит паковать динамический контент или большие файлы ...
Ну ладно, большие файлы ещё не страшно, но учитывая проблемы с динамическим контентом — то вся идея теряет свои преимущества. Тогда уж можно CSS встроить в тело HTML, а изображения вставить в виде base64, а потом сжать GZip'ом.
У base64 минус — увеличивается размер. На мелких файлах не критично, но все же.
Для крупных файлов метод, в принципе, использовать можно… но если есть крупные файлы на странице — то это уже проблема архитектуры)
Для динамического контента можно тоже использовать, но только если для большого количества единовременно подгружаемых элементов.
Для стриминга способ явно неприемлем.
Но вообще, ему вполне может быть найдено применение — к примеру, если сайт нужно просматривать через прокси, который не поддерживает gzip.
Даже с простым динамическим контентом (не стриммингом) будет проблема, так как потребуется дополнительное время на запаковку и распаковку. Возможно будет даже быстрее просто скачать это всё в живом виде, нежели в архиве. Надо проводить тесты производительности, в том числе на мобильных телефонах.
Ну вот для интереса забил произвольным текстом css на 4.77 метра. ZLib на хосте включен.
Время упаковки архива — около 0.1 секунды. Размер архива — 19кб.
Zlib'ом пожатая либа весит 27.9кб.
В принципе, сказать, что бы сильно большая разница была — так нет, разве что в пропорциях сравнивать)
Под android Blob'ик сдох.
Впрочем, через BlobBuilder заработал, css'ка распаковалась и подгрузилась.
Изображения и js'ка исдохли, надо смотреть, почему.
Советую посмотреть в сторону SPDY и PageSpeed от гугла. Есть модули для nginx и apache. Использую на продакшене в одном проекте. Для использования придется скомпилировать nginx с этими модулями и добавить их в конфигурацию.
Согласен, более того, не всегда есть возможность перекомпилировать nginx.
В моем случае nginx разворачивается через docker, и добавить эти модули было тривиально.
Я думаю минусы происходят от костности мышления. Автор не постулирует данный алгоритм на замену gzip'ования трафика. Данный подход еще надо осмыслить. Очевидно он будет иметь свои плюсы в каком-то узком классе задач. Я пока не понимаю, где именно. Но возможно например на интерфейсах, которые должны после загрузки страницы какое-то время работать в браузере без связи с сетью, например. Или возможность быстро откатить какие-то измения, например при работе в графическом онлайн редакторе. Хотя мне в голову не придёт так насиловать браузер и редактировать многослойный файл онлайн, тем не менее в XXI веке можно встретить онлайн-воплощение практически любой фантазии.
Наверное, стоит воспринимать этот способ не как имеющий своей целью сжатие, а скорее как нацеленный на передачу кучки файлов в архиве с возможностью оперировать ими на клиентской стороне в браузере. Когда это может понадобиться и кому — я не знаю. Но если кому-то по какой-то мистической причине окажется удобнее работать с одним архивом, то вот он способ. Описан и опробован.
И уж всяко, не зависимо от того, согласны вы с тезисом статьи или нет, этот материал более достоин Хабра, чем материал про то, как делать панораму одной кнопкой на автомате.
Ресурсы в архиве или как уменьшить количество подгружаемых файлов