PDA

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


DizzZ
26.01.2006, 01:26
Довольно давно столкнулся с проблемой, которая мне до сих пор не дает покоя.
Есть скрипт, но он большой и его объем надо уменьшить. Поскольку за трафик приходится платить. Да и пользователей жалко :)
Можно руками его править, но очень долго и вообще как-то тупо.
Пробовал кучу разного софта: 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 (или просто пишите в этот топик)

nerezus
26.01.2006, 10:47
выдавать сжатые gzip'ом скрипты.
знать пхп.

DizzZ
26.01.2006, 14:38
С чего ты взял, что я не знаю пхп и не пользуюсь гзипом? :)
Вообще несложно догадаться, что если из скрипты выкинуть весь мусор, то он и гзипом лучше сожмется.

vorobei
26.01.2006, 15:54
2DizzZ
знать пхп. это не значит знать его вообще а уметь писать нормально чтоб в скрипте не было лишнего мусора который потом и грузитса часами...

а если есть такая проблема то лучше почитать книги умные по основам програмирования вобщем и оптимизацыи програм...

DizzZ
26.01.2006, 19:46
Я говорил про JavaScript в первую очередь, так что РНР тут не при чем. В принципе, даже очень грамотно написанный скрипт можно уменьшить в пару раз.

nerezus
26.01.2006, 20:08
А вынести в отдельный файл его? Он тогда больше не будет загружаться, броузер его будет брать из кеша %)

KEZ
27.01.2006, 01:36
А у юзеров что оттого что скрипт размером больше будет страничка дольше грузиться?
Они напрямую к скрипту никакого отношения не имеют...

censored!
27.01.2006, 02:10
А у юзеров что оттого что скрипт размером больше будет страничка дольше грузиться?
Они напрямую к скрипту никакого отношения не имеют...
Автор написал что имеет в виду JS.

говорил про JavaScript в первую очередь, так что РНР тут не при чем
Как написали - все js удобно в файле одном хранить. Да и на среднестатистическом сайте че там этого JS? С гулькин нос! А чтобы вес со страницы срезать, лучше уж грамотно изображения оптимизировать - а то у некоторых кнопка-блямба по пару мегов. Или html подчистить. Или прогнать через какой-нить html-оптимизатор, который удалит все что лишнее (и пробелы между тэгами в том числе). Т.е. все будет в одну строку (где это возможно). Так что лучше html чистить.

grinay
27.01.2006, 13:33
Шаблонизирование как говорилось выше... Чтоб работало все с кешем.
<script src=function.js></acript>
та же история и с css.Сжимай график. все выноси за рамки документа...
Вот а вообще да смотря какой скрипт ..если только хтмл то то что я описал выше и если еще и пхп то полюбому работа с шаблонами и оптимиззация кода в официальном мануале по пхп об этом много сказано что например не используйте регепсы там где действительно можно обойтися без них такая же фигня и с циклами while и for.Вот так вообщем.
и вот еще.. не надо изобретать в своих скриптах велосипед есть уже давно много классов готовых которые давным давно оптимизированныи по размеру и по функциональности используй также встроиный функции коих множество. Не надо писать класс который будет вычислять синусы и косинусы которые займут лишние килобайты строк веди есть готовые функции которые занимают 40 байт:)