Объединенный Открытый Проект - Сайт для Настоящих Компьютерщиков

Объединенный Открытый Проект

Сайт для Настоящих Компьютерщиков

; Логин:
  Пароль:
Обычный
Безопасный
Запомнить пользователя



Зарегистрироваться
Забыли пароль?
 
 
 
Объединенный Открытый Проект »   Дизайн, HTML, CSS, JavaScript »   Посоветуйте способы уменьшения объема скриптов
RSS

Посоветуйте способы уменьшения объема скриптов

Текущий рейтинг темы: Нет

<<Назад  Вперед>>Модератор: GramПечать
 
DizzZ
Новичок


Всего сообщений: 5
Рейтинг пользователя: 1





Дата регистрации на форуме:
23 янв. 2006
Довольно давно столкнулся с проблемой, которая мне до сих пор не дает покоя.
Есть скрипт, но он большой и его объем надо уменьшить. Поскольку за трафик приходится платить. Да и пользователей жалко :)
Можно руками его править, но очень долго и вообще как-то тупо.
Пробовал кучу разного софта: 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
Руководитель Проекта
Настоящий Компьютерщик
4X_Pro
Откуда: Москва
Всего сообщений: 2994
Рейтинг пользователя: 79





Дата регистрации на форуме:
29 сен. 2001
К сожалению, не знаю, что ты учел в своей программе, а что - нет, но вот еще ряд советов:
  • вытягивать скрипт в одну строку (удалять символы \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
Участник Проекта
Юниксойд, сетевик
wsx
Откуда: Казань
Всего сообщений: 1074
Рейтинг пользователя: 28

Репутация пользователя: 1




Дата регистрации на форуме:
14 янв. 2005
"(на оптимизацию скрипта в 50К уходит обычно несколько секунд)" - ИМХО ДОЛГО!
DizzZ
Новичок


Всего сообщений: 5
Рейтинг пользователя: 1





Дата регистрации на форуме:
23 янв. 2006
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
Руководитель Проекта
Настоящий Компьютерщик
4X_Pro
Откуда: Москва
Всего сообщений: 2994
Рейтинг пользователя: 79





Дата регистрации на форуме:
29 сен. 2001
Оффтопик: DizzZ Пожалуйста, будь внимателен: у меня в имени ЧЕТЫРЕ икса и к XXX-тематике оно отношения не имеет!


---
Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
wsx
Участник Проекта
Юниксойд, сетевик
wsx
Откуда: Казань
Всего сообщений: 1074
Рейтинг пользователя: 28

Репутация пользователя: 1




Дата регистрации на форуме:
14 янв. 2005
А зачем вобще оптимизировать веб? В Европпе и так у всех каналы широкие и Анлимные. В России скоро будет так же. Экономить лишний кб. траффика ? хм..
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
4X_Pro
Откуда: Москва
Всего сообщений: 2994
Рейтинг пользователя: 79





Дата регистрации на форуме:
29 сен. 2001
wsx А вот тут я с тобой КАТЕГОРИЧЕСКИ несогласен. Ориентироваться надо всегда "на бедных", т.е. на пользователей, у которых канал связи - плохой или с оплатой по траффику.

---
Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
wsx
Участник Проекта
Юниксойд, сетевик
wsx
Откуда: Казань
Всего сообщений: 1074
Рейтинг пользователя: 28

Репутация пользователя: 1




Дата регистрации на форуме:
14 янв. 2005
XXXX Pro, дело в том, что с таким быстрым развитием каналов связи "бедных" скоро вобще не будет. И понятия траффик - вобще не будет. Буквально в ближайшие 2-3 года.
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
4X_Pro
Откуда: Москва
Всего сообщений: 2994
Рейтинг пользователя: 79





Дата регистрации на форуме:
29 сен. 2001
Не верю. Опять же, представь себе следующую ситуацию: ну хорошо, дома у меня безлимит и "понятия траффик не существует". А вот если мне вдруг потребовалось откуда-то еще выйти через ноутбук+мобильник? Тут никакое развитие технологий не поможет... Вряд ли в ближайшее время GPRS сделают безлимитным. Так что оптимизировать - надо.
DizzZ а у тебя обработка имен форм и полей есть какая-нибудь в целях укорачивания? Точнее, поля в большинстве случаев переименовывать нельзя, но можно сделать такую проверку: если имя поля больше определенной длины, то обращаться к нему как к элементу массива elements формы...

---
Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
DizzZ
Новичок


Всего сообщений: 5
Рейтинг пользователя: 1





Дата регистрации на форуме:
23 янв. 2006
XXXX Pro - прошу прощения, ошибся :)

Мне кажется, идиллия типа "понятия трафика вообще не будет" не наступит еще очень долго. Даже напротив, чем шире канал будет у пользователей, тем более остро проблема трафика будет ощущаться на стороне сервера.
Вот подумай: допустим, я плачу за 1ГБ трафика в месяц. Ко мне зашли 1000 пользователей и у каждого загрузился скриптик на 100К. Выходит 100М трафика ни за что ни про что...

---
TrickyScripter - бесплатный опенсорсовый оптимизатор скриптов.
http://ecoder.org.ua/tricky.htm - описание
http://ecoder.org.ua/tricky/ - оптимизатор
wsx
Участник Проекта
Юниксойд, сетевик
wsx
Откуда: Казань
Всего сообщений: 1074
Рейтинг пользователя: 28

Репутация пользователя: 1




Дата регистрации на форуме:
14 янв. 2005
Ну, да, GPRS я не учёл. Хотя я считаю, что скоро и GPRS'a то не будет. Ибо будет Wi-Fi и WiMax, а там тоже траффик будет копеешным..
DizzZ
Новичок


Всего сообщений: 5
Рейтинг пользователя: 1





Дата регистрации на форуме:
23 янв. 2006

XXXX Pro написал:
[q]
DizzZ а у тебя обработка имен форм и полей есть какая-нибудь в целях укорачивания? Точнее, поля в большинстве случаев переименовывать нельзя, но можно сделать такую проверку: если имя поля больше определенной длины, то обращаться к нему как к элементу массива elements формы...
[/q]

Пока нет, но я для того и кинул этот пост, чтобы узнать, что нужно добавить в TrickyScripter =)

---
TrickyScripter - бесплатный опенсорсовый оптимизатор скриптов.
http://ecoder.org.ua/tricky.htm - описание
http://ecoder.org.ua/tricky/ - оптимизатор
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
4X_Pro
Откуда: Москва
Всего сообщений: 2994
Рейтинг пользователя: 79





Дата регистрации на форуме:
29 сен. 2001
DizzZ ну как раз траффик на хостинге - это не столь критично, на мой взгляд: у большинства российских провайдеров он как раз безлимитный.
wsx Возможно, тут сказывается моя субъективная нелюбовь к WiFi. Впрочем, WiFi вытеснит GPRS полностью только тогда, когда полностью уйдут ноутбуки старого поколения, где встроенного WiFi нет вообще (у меня как раз такой).

---
Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
4X_Pro
Откуда: Москва
Всего сообщений: 2994
Рейтинг пользователя: 79





Дата регистрации на форуме:
29 сен. 2001
DizzZ Точнее даже поступать вот так: в самом начале создавать массив с кратким названием (например, elms ии даже el) и обращаться к элементам формы через этот массив по номеру. Проблема только в том, что после такой оптимизации форму трогать будет вообще нельзя: добавление любого поля будет приводить к смещению нумерации.

---
Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
DizzZ
Новичок


Всего сообщений: 5
Рейтинг пользователя: 1





Дата регистрации на форуме:
23 янв. 2006
Ну, это не страшно как раз. Ведь оригина скрипта тоже надо оставить, и просто пережимать скрипт каждый раз, как будешь вносить изменения в оригинал.
Ок, хорошая идея, попробую сделать.

---
TrickyScripter - бесплатный опенсорсовый оптимизатор скриптов.
http://ecoder.org.ua/tricky.htm - описание
http://ecoder.org.ua/tricky/ - оптимизатор
wsx
Участник Проекта
Юниксойд, сетевик
wsx
Откуда: Казань
Всего сообщений: 1074
Рейтинг пользователя: 28

Репутация пользователя: 1




Дата регистрации на форуме:
14 янв. 2005
offtop: XXXXPro, зря ты не любишь WiFi. Всё таки вещь хорошая. Очень даже.
<<Назад  Вперед>>Модератор: GramПечать
Объединенный Открытый Проект »   Дизайн, HTML, CSS, JavaScript »   Посоветуйте способы уменьшения объема скриптов
RSS
Быстрый переход в раздел:


Время выполнения скрипта: 0.1137. Количество выполненных запросов: 17, время выполнения запросов 0.1003