Комментарии 51
Теперь заменим везде в теле функции this на self и посмотрим на результаты сжатия.
а на сколько t тяжелее s?
-1
А вы пробовали сравнить два результата? Там все видно.
+2
this нельзя сжимать. а вот self — можно
0
В Google Closure Compiler есть возможнось алиасить переменные this, window, document. Но от этого отказались по умолчанию потому как это уменьшает скорость выполнения ~10%. В особенности V8 не любит это.
Спроситите в maillist они вам более развернутый ответ дадут.
Спроситите в maillist они вам более развернутый ответ дадут.
0
Скажу сразу, что gzip нам не переплюнуть, но когда его нет под рукой, эта техника сжатия может оказаться весьма полезной.Прям страшный сон какой-то, нет под рукой gzip :)
+9
gzip нам не переплюнуть, но когда его нет под рукойЭто как, простите?
+3
GZip есть везде, другое дело что включать его иногда не хотят по каким-то причинам. Но в продакшен можно уже и включить.
+1
Бывает всякое: требования заказчика, старые браузеры, спортивный интерес… :) Кроме того, я думаю, можно организовать код так, чтобы он эффективнее сжимался gzip'ом, и тогда оптимизированные скрипты будут выигрывать и в .gz.
0
Как-то не хватает итогов, на сколько с применением данных техник стали меньше исходники, сжатые Closure Compiler и YUI Compressor, по сравнению с оригинальными исходниками, сжатыми ими же?
+3
НЛО прилетело и опубликовало эту надпись здесь
GWT?
0
НЛО прилетело и опубликовало эту надпись здесь
На самом деле я был не совсем прав.
Все-таки там генерируется джаваскрипт, который достаточно сильно сжат именно вербальными методами. Но мне затруднительно сказать, сколько он экономит трафика, потому что он еще и обфусцирован до полной невозможности восприятия.
А сам GWT — это возможность написать клиент-серверное веб-приложение на php или java без знания html, javascript и css
Все-таки там генерируется джаваскрипт, который достаточно сильно сжат именно вербальными методами. Но мне затруднительно сказать, сколько он экономит трафика, потому что он еще и обфусцирован до полной невозможности восприятия.
А сам GWT — это возможность написать клиент-серверное веб-приложение на php или java без знания html, javascript и css
0
А разве GWT существует не только под Java'у?
0
Родной он под джаву, но
code.google.com/p/gwtphp/
www.gwtphp.com/
Насколько они актуальны, я не знаю, потому что сам пишу на джаве.
code.google.com/p/gwtphp/
www.gwtphp.com/
Насколько они актуальны, я не знаю, потому что сам пишу на джаве.
+1
Это тока сервеная часть. Клиентскую так и остается на java.
0
/Клиентская часть — это по сути всего навсего один js+5 html файликов. Не думаю, что большой проблемой является их распаковать из war архива и заставить отдаваться через апач/инжиникс.
0
GWT это штука которая компилит java в javascript. Как одну из фитчей он потдерживает комуникацию с сервером. gwtphp это простейшая реализация протокола которым пользуется gwt. Никаких компиляций клиентского кода єта либа не потдерживает.
0
А, то есть как бэкэнд нам все равно нужен сервер типа томката или глассфиша?
Для меня просто тема не особо актуальна, потому что у нас в продакшене все равно томкат используется.
Для меня просто тема не особо актуальна, потому что у нас в продакшене все равно томкат используется.
0
То что компилит GWT для клиентской части, это набор статических файлов. JS, CSS, HTML и картинки. Их можно хостить где угодно. Мы например .NET стек, и хостим их под IIS. А вообще собираемся на CDN.
А уж серверная часть может быть быть начем угодно, по умолчанию это java и соотвевенно требует апп сервер. Но вполне может быть чем угодно. У нас это .NET. Вот и gwtphp, это тока серверная часть. Маленький опциональный кусочек.
Тоесть вы все ранво продолжаете писать клиентскую часть на java. Компилить ее в статические файлы. А сервер уже PHP.
Это я к тому что не существует GWT не под java. Есть интеграции с разными серверными стеками.
А уж серверная часть может быть быть начем угодно, по умолчанию это java и соотвевенно требует апп сервер. Но вполне может быть чем угодно. У нас это .NET. Вот и gwtphp, это тока серверная часть. Маленький опциональный кусочек.
Тоесть вы все ранво продолжаете писать клиентскую часть на java. Компилить ее в статические файлы. А сервер уже PHP.
Это я к тому что не существует GWT не под java. Есть интеграции с разными серверными стеками.
0
А, теперь понял.
Да, мне как-то не пришло в голову, что именно джава компилится в джаваскрипт и так далее.
Прошу прощения за тупость.
Ну и в итоге имеем, что при желании GWT-приложение можно поднять на бесплатном хостинге с php+mysql. До вас мне эта мысль в голову не приходила, спасибо.
А нет ли аналогичных фреймворков для того же php? Чтобы мы написали на php, запустили, у нас создалось некоторое количкство файликов?
Да, мне как-то не пришло в голову, что именно джава компилится в джаваскрипт и так далее.
Прошу прощения за тупость.
Ну и в итоге имеем, что при желании GWT-приложение можно поднять на бесплатном хостинге с php+mysql. До вас мне эта мысль в голову не приходила, спасибо.
А нет ли аналогичных фреймворков для того же php? Чтобы мы написали на php, запустили, у нас создалось некоторое количкство файликов?
0
Тестовый плагин весит ровно 1 КБ, в сжатом виде 576 Байт, в gzip 391 КБ.
391 килобайт?:)
0
Тестовый плагин весит ровно 1 КБ, в сжатом виде 576 Байт, в gzip 391 КБ.Если там действительно килобайты, то Вы очень неплохо переплюнули gzip :)
+4
По-моему, правильное решение в этом случае — это написать предложение в саппорт Google Compiler'a и прочих сжимальщиков.
Код всегда должен оставаться как можно более читабельным, с возможностью быстрого сжатия специализированными тулзами.
Код всегда должен оставаться как можно более читабельным, с возможностью быстрого сжатия специализированными тулзами.
+1
Есть одна проблема. Дело в том, что обращение к методу через переменную более долгое, чем напрямую по имени.
Т.е.
Я раньше тоже использовал технику кэширования имен атрибутов и методов, но потом провел тесты и решил отказаться от этого в пользу производительности.
Т.е.
obj["method"](); // Дольше, чем:
obj.method();
Я раньше тоже использовал технику кэширования имен атрибутов и методов, но потом провел тесты и решил отказаться от этого в пользу производительности.
+1
о, расскажите, пожалуйста, поподробнее? насколько дольше?
0
Разумеется, этот подход не для тех приложений, в которых критична скорость (впрочем, как и ООП с его наследованием и другие навороты). Но если в пределах 5 строк 12 раз встречаются конструкции типа
$(document)
, то уж обращение к свойству через переменную вы точно можете себе позволить.0
в таком варианте — все равно. Производительность обычно на вызовах функций падает, а не на разыменовании
0
Packer тоже примерно также писали. Только вот инициализация такого сжатого скрипта — неблагодарное занятие.
0
Отличная статья, спасибо. Кстати, вы там случайно функцию копирайта выложили ;)
0
Можно было бы завернуть весь скрипт в строку, провести часточный анализ слов и заменять самые используемые слова в строке на неиспользуемые байты.
Распаковщик будет в 50 байт.
Распаковщик будет в 50 байт.
0
Подобное я уже где-то видел… А, в плагине Lightbox для RightJS: rightjs.org/builds/ui/right-lightbox.js
0
«var self = this», кстати, помогает, если ночью, когда «мозги не варят», переключаешься между Python и JS кодом и путаешься %)
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Сам себе gzip: сжимаем скрипты на 20% лучше