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

Discussion in 'PHP' started by DizzZ, 26 Jan 2006.

  1. DizzZ

    DizzZ New Member

    Joined:
    24 Jan 2006
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    Довольно давно столкнулся с проблемой, которая мне до сих пор не дает покоя.
    Есть скрипт, но он большой и его объем надо уменьшить. Поскольку за трафик приходится платить. Да и пользователей жалко :)
    Можно руками его править, но очень долго и вообще как-то тупо.
    Пробовал кучу разного софта: HTML Zip, HTMLCompress, w3compiler, packer и еще кучу всего.
    В некоторых софтинах встретилась довольно забавная тенденция - скрипты не работают после сжатия (в частности такое наболюдалось после обработки w3compiler'ом).
    Вторая проблема - из-за использования zip-подобного алгоритма (а также из-за того, что распаковщик написан на JavaScript) скрипты разжимаются довольно долго (иногда несколько секунд, такое наблюдалось в HTML Zip, например).
    Короче, решил свою софтину написать - eCoder. Вышло довольно неплохо (http://ecoder.org.ua), но второй недостаток хоть и сгладился, но не исчез - скриты все равно довольно долго распаковывались (хотя качество сжатия было существенно лучше, чем у вышеописанного софта.)
    Для работы этой софтины требовался еще и .NET 1.1, что тоже достоинством не назовешь :-/ . Но делать нечего, приходилось пользоваться тем, что есть.
    Это было где-то год назад.
    Со временем я все же пришел к мысли, что надо не паковать, а по возможности оптимизировать, удаляя лишнее и укорачивая имена переменных.
    Поискал такой софт. Кроме упомянутого выше w3compiler'а нашел еще кучу барахла, но скрипты в результате обработки либо мало уменьшались в размере, либо переставали работать, либо и то и другое :)
    И опять я решил посоревноваться. Вроде бы, на этот раз успешно :)
    Софтина вышла небольшая, кроссбраузерная (и, следовательно, кроссплатформенная). Поскольку писал на JavaScript, работает это все не слишком быстро, но на мой взгляд вполне нормально (на оптимизацию скрипта в 50К уходит обычно несколько секунд). Скрипты вроде не портит.

    Но вот какой вопрос: может кто подскажет, как еще можно уменьшить объем скриптов?
    Своей софтной (я обозвал ее TrickyScripter) я решил поделиться со всеми желающими (не жалко =)), так что ваши советы не пропадут зря, а принесут пользу вам и другим разработчикам.
    На данный момент TrickyScripter уменьшает объем скриптов обычно вдвое-втрое. Но, я думаю, это не предел, если каждый поможет, чем сможет :)
    Если кто хочет дать совет, побыть бета тестер или кому просто интересен этот проект - мыльте на [email protected] (или просто пишите в этот топик)
     
  2. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    выдавать сжатые gzip'ом скрипты.
    знать пхп.
     
  3. DizzZ

    DizzZ New Member

    Joined:
    24 Jan 2006
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    С чего ты взял, что я не знаю пхп и не пользуюсь гзипом? :)
    Вообще несложно догадаться, что если из скрипты выкинуть весь мусор, то он и гзипом лучше сожмется.
     
  4. vorobei

    vorobei New Member

    Joined:
    23 Dec 2005
    Messages:
    11
    Likes Received:
    1
    Reputations:
    -1
    2DizzZ
    знать пхп. это не значит знать его вообще а уметь писать нормально чтоб в скрипте не было лишнего мусора который потом и грузитса часами...

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

    DizzZ New Member

    Joined:
    24 Jan 2006
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    Я говорил про JavaScript в первую очередь, так что РНР тут не при чем. В принципе, даже очень грамотно написанный скрипт можно уменьшить в пару раз.
     
  6. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    А вынести в отдельный файл его? Он тогда больше не будет загружаться, броузер его будет брать из кеша %)
     
  7. KEZ

    KEZ Ненасытный школьник

    Joined:
    18 May 2005
    Messages:
    1,604
    Likes Received:
    754
    Reputations:
    397
    А у юзеров что оттого что скрипт размером больше будет страничка дольше грузиться?
    Они напрямую к скрипту никакого отношения не имеют...
     
  8. censored!

    censored! Green member

    Joined:
    2 Nov 2004
    Messages:
    1,160
    Likes Received:
    299
    Reputations:
    156
    Автор написал что имеет в виду JS.

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

    grinay IQ- 137%

    Joined:
    15 Jun 2004
    Messages:
    409
    Likes Received:
    174
    Reputations:
    305
    Шаблонизирование как говорилось выше... Чтоб работало все с кешем.
    <script src=function.js></acript>
    та же история и с css.Сжимай график. все выноси за рамки документа...
    Вот а вообще да смотря какой скрипт ..если только хтмл то то что я описал выше и если еще и пхп то полюбому работа с шаблонами и оптимиззация кода в официальном мануале по пхп об этом много сказано что например не используйте регепсы там где действительно можно обойтися без них такая же фигня и с циклами while и for.Вот так вообщем.
    и вот еще.. не надо изобретать в своих скриптах велосипед есть уже давно много классов готовых которые давным давно оптимизированныи по размеру и по функциональности используй также встроиный функции коих множество. Не надо писать класс который будет вычислять синусы и косинусы которые займут лишние килобайты строк веди есть готовые функции которые занимают 40 байт:)
     
    #9 grinay, 27 Jan 2006
    Last edited: 27 Jan 2006