Почему .zip — это прошлый век?
Битые файлы
Сколько раз вы скачивали важный и большой архив, чтобы после скачивания получить ошибку о невозможности открыть архив, или несовпадение CRC? ZIP-алгоритмы чувствительны к малейшей потере пакетов при передаче. Тем временем папка скачивается потоково — если файл повредился, вы теряете только один файл, а не все содержимое папки.
Лишнее время и ресурсы
Зачем мы упаковываем данные на сервере (тратя его ресурсы), скачиваем их, а потом распаковываем на клиенте (третя ресурсы уже ПК)? Современные скорости интернета давно сделали сжатие файлов бессмысленным. Вы просто делаете двойную работу.
Проблемы с безопасностью
Архивы — идеальный контейнер для скрытого вредоносного ПО. Антивирусам тяжело сканировать глубоко вложенные запароленные ZIP-файлы в реальном времени. Открытая директория проверяется системой мгновенно при загрузке.
И что же делать? Используйте атрибут download!
Популярные браузерные движки, такие как Chromium и Gecko, давно внедрили возможность загрузки папок. Чтобы заставить браузер скачать директорию без архивации, достаточно правильно использовать старый добрый HTML-атрибут download в связке с правильным MIME-типом на сервере.
Если сервер отдает заголовок Content-Type: inode/directory, а у ссылки стоит атрибут download, браузер автоматически создаст папку с тем именем, которые мы указали в href или download, в папке "Загрузки" и инициирует потоковую загрузку файлов в эту самую папку. Никаких плагинов. Чистый HTML5.