Посоветуйте способы уменьшения объема скриптов
Текущий рейтинг темы: Нет
DizzZ
Новичок
Всего сообщений: 5 Рейтинг пользователя: 1
Дата регистрации на форуме: 23 янв. 2006
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 24 января 2006 0:01
Довольно давно столкнулся с проблемой, которая мне до сих пор не дает покоя.
Есть скрипт, но он большой и его объем надо уменьшить. Поскольку за трафик приходится платить. Да и пользователей жалко
Можно руками его править, но очень долго и вообще как-то тупо.
Пробовал кучу разного софта: HTML Zip, HTMLCompress, w3compiler, packer и еще кучу всего.
В некоторых софтинах встретилась довольно забавная тенденция - скрипты не работают после сжатия (в частности такое наболюдалось после обработки w3compiler'ом).
Вторая проблема - из-за использования zip-подобного алгоритма (а также из-за того, что распаковщик написан на JavaScript) скрипты разжимаются довольно долго (иногда несколько секунд, такое наблюдалось в HTML Zip, например).
Короче, решил свою софтину написать - eCoder. Вышло довольно неплохо (http://ecoder.org.ua), но второй недостаток хоть и сгладился, но не исчез - скриты все равно довольно долго распаковывались (хотя качество сжатия было существенно лучше, чем у вышеописанного софта.)
Для работы этой софтины требовался еще и .NET 1.1, что тоже достоинством не назовешь :-/ . Но делать нечего, приходилось пользоваться тем, что есть.
Это было где-то год назад.
Со временем я все же пришел к мысли, что надо не паковать, а по возможности оптимизировать, удаляя лишнее и укорачивая имена переменных.
Поискал такой софт. Кроме упомянутого выше w3compiler'а нашел еще кучу барахла, но скрипты в результате обработки либо мало уменьшались в размере, либо переставали работать, либо и то и другое
И опять я решил посоревноваться. Вроде бы, на этот раз успешно
Софтина вышла небольшая, кроссбраузерная (и, следовательно, кроссплатформенная). Поскольку писал на JavaScript, работает это все не слишком быстро, но на мой взгляд вполне нормально (на оптимизацию скрипта в 50К уходит обычно несколько секунд). Скрипты вроде не портит.
Но вот какой вопрос: может кто подскажет, как еще можно уменьшить объем скриптов?
Своей софтной (я обозвал ее TrickyScripter) я решил поделиться со всеми желающими (не жалко =)), так что ваши советы не пропадут зря, а принесут пользу вам и другим разработчикам.
На данный момент TrickyScripter уменьшает объем скриптов обычно вдвое-втрое. Но, я думаю, это не предел, если каждый поможет, чем сможет
Если кто хочет дать совет, побыть бета тестер или кому просто интересен этот проект - мыльте на scriptGuru@gmail.com (или просто пишите в этот топик)
--- TrickyScripter - бесплатный опенсорсовый оптимизатор скриптов.
http://ecoder.org.ua/tricky.htm - описание
http://ecoder.org.ua/tricky/ - оптимизатор
| | |
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
Откуда: Москва Всего сообщений: 2994 Рейтинг пользователя: 79 Дата регистрации на форуме: 29 сен. 2001
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 24 января 2006 0:56
К сожалению, не знаю, что ты учел в своей программе, а что - нет, но вот еще ряд советов: - вытягивать скрипт в одну строку (удалять символы \r\n)
- удалять пробелы между ; и следующим оператором, а также перед и после { и }
- удалять комментарии (хотя все равно их в JS, по-моему, пишут только в учебниках)
Еще можно пытаться искать длинные идентификаторы, используемые многократно (например, document.forms[0].p_text.value) и вставлять конструкцию вида pt=document.forms[0].p_text, а затем заменять все document.forms[0].p_text.value на pt.value, но не уверен, можно ли автоматизировать этот процесс. (Точнее, тут надо писать парсер, а я с парсерами всегда не дружил.)
P.S. Кстати, по-моему, эту тему лучше переместить в "Программирование-общие вопросы".
--- Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
| | |
wsx
Участник Проекта
Юниксойд, сетевик
Откуда: Казань Всего сообщений: 1074 Рейтинг пользователя: 28 Репутация пользователя: 1Дата регистрации на форуме: 14 янв. 2005
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 24 января 2006 10:26
"(на оптимизацию скрипта в 50К уходит обычно несколько секунд)" - ИМХО ДОЛГО! | | |
DizzZ
Новичок
Всего сообщений: 5 Рейтинг пользователя: 1
Дата регистрации на форуме: 23 янв. 2006
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 24 января 2006 11:42
to XXX Pro: спасибо за советы!
Кстати, в состав TrickyScripter'a уже входит парсер, так что все перечисленное тобой можно сделать автоматически (я так думаю)
Насчет того, какие методы оптимизации уже используются:
1. Удаляются комментарии, пробелы и табы везде, где можно безопасно это сделать. \r\n заменяется на \n или ; (зависит от ситуации)
2. Имена локальных переменных заменяются на более короткие. Имена глобальных переменных не трогаются, поскольку это не совсем безопасно. Возможно, в следующей версии разработаю безопасный механизм.
В принципе, это все можно почитать и попробовать на http://ecoder.org.ua/tricky.htm
to wsx: я тоже так считаю. Думаю, дело в том, что он написан на JavaScript, т.к. я и так уже оптимизировал все для максимальной скорости. Но врядли кто-то захочет переписывать на более быстрый язык
--- TrickyScripter - бесплатный опенсорсовый оптимизатор скриптов.
http://ecoder.org.ua/tricky.htm - описание
http://ecoder.org.ua/tricky/ - оптимизатор
| | |
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
Откуда: Москва Всего сообщений: 2994 Рейтинг пользователя: 79 Дата регистрации на форуме: 29 сен. 2001
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 24 января 2006 12:11
Оффтопик: DizzZ Пожалуйста, будь внимателен: у меня в имени ЧЕТЫРЕ икса и к XXX-тематике оно отношения не имеет!
--- Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
| | |
wsx
Участник Проекта
Юниксойд, сетевик
Откуда: Казань Всего сообщений: 1074 Рейтинг пользователя: 28 Репутация пользователя: 1Дата регистрации на форуме: 14 янв. 2005
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 24 января 2006 12:11
А зачем вобще оптимизировать веб? В Европпе и так у всех каналы широкие и Анлимные. В России скоро будет так же. Экономить лишний кб. траффика ? хм.. | | |
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
Откуда: Москва Всего сообщений: 2994 Рейтинг пользователя: 79 Дата регистрации на форуме: 29 сен. 2001
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 24 января 2006 12:22
wsx А вот тут я с тобой КАТЕГОРИЧЕСКИ несогласен. Ориентироваться надо всегда "на бедных", т.е. на пользователей, у которых канал связи - плохой или с оплатой по траффику.
--- Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
| | |
wsx
Участник Проекта
Юниксойд, сетевик
Откуда: Казань Всего сообщений: 1074 Рейтинг пользователя: 28 Репутация пользователя: 1Дата регистрации на форуме: 14 янв. 2005
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 24 января 2006 14:12
XXXX Pro, дело в том, что с таким быстрым развитием каналов связи "бедных" скоро вобще не будет. И понятия траффик - вобще не будет. Буквально в ближайшие 2-3 года. | | |
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
Откуда: Москва Всего сообщений: 2994 Рейтинг пользователя: 79 Дата регистрации на форуме: 29 сен. 2001
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 24 января 2006 14:26
Не верю. Опять же, представь себе следующую ситуацию: ну хорошо, дома у меня безлимит и "понятия траффик не существует". А вот если мне вдруг потребовалось откуда-то еще выйти через ноутбук+мобильник? Тут никакое развитие технологий не поможет... Вряд ли в ближайшее время GPRS сделают безлимитным. Так что оптимизировать - надо.
DizzZ а у тебя обработка имен форм и полей есть какая-нибудь в целях укорачивания? Точнее, поля в большинстве случаев переименовывать нельзя, но можно сделать такую проверку: если имя поля больше определенной длины, то обращаться к нему как к элементу массива elements формы...
--- Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
| | |
DizzZ
Новичок
Всего сообщений: 5 Рейтинг пользователя: 1
Дата регистрации на форуме: 23 янв. 2006
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 24 января 2006 14:30
XXXX Pro - прошу прощения, ошибся
Мне кажется, идиллия типа "понятия трафика вообще не будет" не наступит еще очень долго. Даже напротив, чем шире канал будет у пользователей, тем более остро проблема трафика будет ощущаться на стороне сервера.
Вот подумай: допустим, я плачу за 1ГБ трафика в месяц. Ко мне зашли 1000 пользователей и у каждого загрузился скриптик на 100К. Выходит 100М трафика ни за что ни про что...
--- TrickyScripter - бесплатный опенсорсовый оптимизатор скриптов.
http://ecoder.org.ua/tricky.htm - описание
http://ecoder.org.ua/tricky/ - оптимизатор
| | |
wsx
Участник Проекта
Юниксойд, сетевик
Откуда: Казань Всего сообщений: 1074 Рейтинг пользователя: 28 Репутация пользователя: 1Дата регистрации на форуме: 14 янв. 2005
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 24 января 2006 14:31
Ну, да, GPRS я не учёл. Хотя я считаю, что скоро и GPRS'a то не будет. Ибо будет Wi-Fi и WiMax, а там тоже траффик будет копеешным.. | | |
DizzZ
Новичок
Всего сообщений: 5 Рейтинг пользователя: 1
Дата регистрации на форуме: 23 янв. 2006
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 24 января 2006 14:33
XXXX Pro написал: [q] DizzZ а у тебя обработка имен форм и полей есть какая-нибудь в целях укорачивания? Точнее, поля в большинстве случаев переименовывать нельзя, но можно сделать такую проверку: если имя поля больше определенной длины, то обращаться к нему как к элементу массива elements формы... [/q]
Пока нет, но я для того и кинул этот пост, чтобы узнать, что нужно добавить в TrickyScripter =)
--- TrickyScripter - бесплатный опенсорсовый оптимизатор скриптов.
http://ecoder.org.ua/tricky.htm - описание
http://ecoder.org.ua/tricky/ - оптимизатор
| | |
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
Откуда: Москва Всего сообщений: 2994 Рейтинг пользователя: 79 Дата регистрации на форуме: 29 сен. 2001
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 24 января 2006 15:10
DizzZ ну как раз траффик на хостинге - это не столь критично, на мой взгляд: у большинства российских провайдеров он как раз безлимитный.
wsx Возможно, тут сказывается моя субъективная нелюбовь к WiFi. Впрочем, WiFi вытеснит GPRS полностью только тогда, когда полностью уйдут ноутбуки старого поколения, где встроенного WiFi нет вообще (у меня как раз такой).
--- Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
| | |
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
Откуда: Москва Всего сообщений: 2994 Рейтинг пользователя: 79 Дата регистрации на форуме: 29 сен. 2001
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 24 января 2006 15:18
DizzZ Точнее даже поступать вот так: в самом начале создавать массив с кратким названием (например, elms ии даже el) и обращаться к элементам формы через этот массив по номеру. Проблема только в том, что после такой оптимизации форму трогать будет вообще нельзя: добавление любого поля будет приводить к смещению нумерации.
--- Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
| | |
DizzZ
Новичок
Всего сообщений: 5 Рейтинг пользователя: 1
Дата регистрации на форуме: 23 янв. 2006
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 24 января 2006 15:34
Ну, это не страшно как раз. Ведь оригина скрипта тоже надо оставить, и просто пережимать скрипт каждый раз, как будешь вносить изменения в оригинал.
Ок, хорошая идея, попробую сделать.
--- TrickyScripter - бесплатный опенсорсовый оптимизатор скриптов.
http://ecoder.org.ua/tricky.htm - описание
http://ecoder.org.ua/tricky/ - оптимизатор
| | |
wsx
Участник Проекта
Юниксойд, сетевик
Откуда: Казань Всего сообщений: 1074 Рейтинг пользователя: 28 Репутация пользователя: 1Дата регистрации на форуме: 14 янв. 2005
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 24 января 2006 15:46
offtop: XXXXPro, зря ты не любишь WiFi. Всё таки вещь хорошая. Очень даже. | | |
Время выполнения скрипта: 0.0913. Количество выполненных запросов: 17, время выполнения запросов 0.0427
|