Сжатие JavaScript с использованием PNG и Canvas
Jacob Seidelin в своём блоге «Nihilogic» опубликовал небезынтересную статью, где он рассказывает о своих экспериментах по сжатию кода JavaScript при помощи Canvas и PNG.
Идея простая, из разряда «как мне раньше не пришло это в голову». JavaScript переводится в последовательность байт, которая записывается как изображение. Изображение сохраняется
Далее
Единственный недостаток метода — скорость. Извлечение скрипта в 255Кб может занять несколько секунд, что, впрочем, не всегда является проблемой.
Комментарии 32
Сжимать JavaScript… А зачем его сжимать таким способом?
Какие преимущества несёт данный способ перед обычным
Хотя конечно, сама идея, что и так тоже можно выпендриться — она внушаетъ:)
И где это его нет?
что-то, не аналогичное по идиотизму 3-му Нетскейпу, где на
Сделал страницу
http://maxim.rusf.ru/cmp.html
проверил во всех доступных мне в 3 часа ночи браузерах, работает везде кроме Netscape 3.04/Linux (есть такое чудо у меня).
Linux:
Firefox 1.0
Firefox 2.0
Opera 9.1
Windows XP:
MSIE 6.0
Opera 9.0
Windows Vista:
MSIE 7.0
Windows CE (КПК то бишь):
MSIE 4.0
Телефон Nokia 6300:
Какой безымянный встроенный браузер
Opera Mini 4.0
Есть у вас
Комментарий для Евгения Степанищева:
Зачем для выкладывания файла script.js.gz нужныкакие-то там языки программирования или «сжатие файлов на хостинге»?
Не в браузерах его нет, а на хостингах может и не быть.
Для этого .gz должен быть прописан заголовок
Корректная выдача заголовков для gz и тип для js прописаны в конфигах «из коробки» в самом массовом сервере — Апаче. Нужно специально приложить усилия, чтобы _не_ работало, а не дополнительно настраивать, чтобы работало.
Может быть, конечно, вебмастера сначала выкидывают всё из конфига, а потом начинают по строчке добавлять, не знаю.
Многим нужно чтобы файлы .gz просто скачивались, а не распаковывались в браузер. Так как это — просто архивы в одном из распространённых форматов во всяких Линуксах.
Кроме того, я не защищаю этот метод. Мне он просто нравится, он остроумен.
Не работает:
Browser: Mozilla/5.0 (compatible; Konqueror/3.5; FreeBSD; X11; i386; en_US, ru) KHTML/3.5.8 (like Gecko)
Result: external script is not loaded
Жаль.
«А разве
Да, я считал, что script.js.gz сработает в любом современном браузере.
«Многим нужно чтобы файлы .gz просто скачивались, а не распаковывались в браузер. Так как это — просто архивы в одном из распространённых форматов во всяких Линуксах.»
Если то, что сжато гзипом, не должно отображаться в браузере, оно не отобразится. gzip — это не формат архива, это формат сжатия. Архив (набор файлов) — это tar. У файлов tar
Если вы сжимаете файл html или txt, то он, разумеется, отобразится. И было бы очень нелогично, если бы не отображалось, а скачивалось. Это ведь html и текст, с какой стати оно должно скачиваться?
Если человек выкидывает из конфига
Я знаю всё про gzip, tar и
Не вижу ничего нелогичного в том, что .html.gz или .txt.gz должен скачиваться, а не распаковываться. Если я указываю браузеру, что файл должен скачаться, я знаю что я делаю. Значит этот txt или html не предназначен для того, чтобы читать его из браузера, например, там очень большой текст, который 99% скачает и откроет на PDA/телефоне/любом наладонном устройстве.
Хех, скорость ответа — пять баллов.
А насколько оно адекватно? В смысле, например, крупных
/Перечитал —
Оно вполне адекватно и хорошо сжимает. Но есть загвоздка — скорость распаковки даже
То есть в идеале надо бы анализировать скорость ответа (соединения) и в зависимости от нее — выбирать тот или иной способ упаковки… Да еще и зависимость получается нелинейная. Дамс, проще забить. :) Но сама мысля — интересна.
Это не единственный недостаток, ie только с9-ого поддерживает canvas.
А так очень эффективный способ сжатия.