Просмотр полной версии : Необходимы советы по оптимизации сайта
koIIImarik
13.01.2009, 04:30
Здравствуйте.
Не так давно нами (студия Simpepack — дизайн, я — программирование ианимация) был разработан сайт этой же студии: http://simplepack.ru/
Сайт (AS2) очень объёмный с большим количеством анимации и программирования, в частности очень большое количество анимации привело к некоторым тормозам на начальной страничке.
Всвязи с этим хотел бы у вас поинтересоваться:
1) Есть ли у кого-нибудь мысли, как можно оптимизировать нагрузку на процессор на главной странице сайта?
2) В частности меня интересует оптимизация следующего кода, который отвечает за движение влево-право на начальной странице:
//Функции предевижения
function onMouseMove()
{
//trace("onMouseMove");
// 1280 / 2 + 300 = 940
if (this._xmouse >= 1040 && this._xmouse <= 1280)
{
this._aX = Math.round((1040 - this._xmouse) / 40);
}else if (_xmouse <= 240 && _xmouse >= 0)
{
this._aX = Math.round((240 - this._xmouse) / 40);
}else
{
this._aX = 0;
}
//
//trace("_aX " + this._aX);
}
//
function setMove_func()
{
trace("setMove_func");
this.removeMove_func();
this.move_int = setInterval(move_func, 30, this);
}
function removeMove_func()
{
clearInterval(this.move_int);
}
function move_func(varThis:MovieClip)
{
//trace("move_func " + varThis + "| varThis.cont_mc " + varThis.cont_mc);
varThis._vX += varThis._aX;
varThis.cont_mc._x += varThis._vX;
if (varThis.cont_mc._x > 0)
{
varThis.cont_mc._x = 0;
}else if (varThis.cont_mc._x < varThis._clearWidth)
{
varThis.cont_mc._x = varThis._clearWidth;
}
//
varThis._vX *= varThis._k;
varThis._vX = (Math.round(varThis._vX) == 0)?0:varThis._vX;
}
В начале инициализации класса идёт вызов setMove(), как видно из кода, эта функция вызвается примерно 33 раза в секунду и просчитывает необходимое движение мувика.
Ну, во-первых ты этот здоровенный клип двигаешь под маской или используешь scrollrect?
Есть еще мыслишки про битмапу
Потом (это конечно не оптимизация)я еле нашел пункты меню,не понятно где-что.Может их лучше сразу подписать,без onRollOverов?
Вот хоть убей, не понимаю, зачем в именах классов делать постфикс _class, в функциях _func, передавать странные ссылки типа varThis, ну зачем, а?
dmitriev
13.01.2009, 12:31
Вот хоть убей, не понимаю, зачем в именах классов делать постфикс _class, в функциях _func, передавать странные ссылки типа varThis, ну зачем, а?
Мне думается что человеческий мозг и не на такое способен, вообще объективных причин так делать нет, скорее всего это проблема психоанализа, невроз.
koIIImarik
13.01.2009, 14:39
2 scarbo:
1) Здоровенный клип двигается под маской, там маска накладывается вообще на весь сайт, чтобы на более больших разрешениях он "не выходил" за пределы. Думаю использовать "scrollrect" не получится, т.к. с помощью него можно изменять только целочисленные значения, а хотелось бы добиться плавного движения.
2) cacheAsBitmap, по-моему, тут не канает, т.к. большой фон, позади, передвигается вместе со всем содержимым, а значит перерисовывается, значит весь cacheAsBitmap идёт насмарку. Если я где-то ошибаюсь, то поправьте меня.
2 _etc:
Просьба звучала в помощи по оптимизации работы сайта, и были поставлены конкретные вопросы, вы на них не ответили, значит вы флеймите. Вывод: забаньте себя сами.
Но даже не смотря на это, я так привык писать, возможно вам это покажется не правильным, но мне это не правильным не кажется, по крайней мере на данный момент. Если можете привести объективные причины, почему программисту так лучше не делать — выслушаю. Ещё лучше, если вы приведёте примеры или советы по оптимизации сайта.
Кстати, на счёт varThis, меня вообще давно парил вопрос с setInterval, и то, что внутри него нельзя ссылаться на объект, в теле которого он вызывался, через this. Поэтому переменная varThis у меня — это аналог this, чтобы в setInterval() можно было обращаться к экземпляру, который вызывал интервал. Если есть более красивый аналог, то буду благодарен за "просвящение".
2 dmitriev:
Люди, я с вас фигею, зачем вести себя, как базарные бабки с одним желанием обосрать кого-то. Я буду благодарен, если вы тут приведёте примеры, почему так писать нельзя и научите меня "красивому" коду. Ещё лучше, если вы ответите на поставленные вопросы в топике, это для меня сейчас более важно.
Та не, не переживайте. Вы хотя бы this используете. А это большой плюс =)
Если можете привести объективные причины, почему программисту так лучше не делать — выслушаю.
Эти постфиксы — избыточная информация, а вытекает она, скорее всего, из-за того, что используется плохой редактор кода без автокомплита.
Если есть более красивый аналог, то буду благодарен за "просвящение".
http://livedocs.adobe.com/flash/9.0/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00001216.html
Обратите внимание на варианты использования setInterval.
К вопросу об оптимизации,повторю еще разНу, во-первых ты этот здоровенный клип двигаешь под маской или используешь scrollrect?
По существу. Вы не фансайт и, скорее всего люди в интернете ищут что-то и хотят найти и получить это быстро. Сайт Вашей %companyname% на моих 2 Mbit грузился порядка 10 секунд. Не будь другой мотивации, я, скорее всего, закрыл бы страничку на 5-6 секунде. Сравните с поисковыми системами. Звук тем более там бессмысслен.
scrollrect" не получится, т.к. с помощью него можно изменять только целочисленные значения
Да ну?Что то у меня карта метро и обл. двигается нормально
koIIImarik
13.01.2009, 15:08
2 scarbo:
Если не сложно, можно посмотреть на пример карты и часть кода, которая отвечает за перемещение?
Код ссылка (http://strelila.narod.ru/pan.zip)
Пример на скорую руку - ссылка (http://strelila.narod.ru/panorama.html)
Размер окна-400*400,фотки - 1024*768.
AlexCooper
13.01.2009, 18:47
Сразу не понравилось что я успел покурить, сделать себе кофе и допил его до середины, а еще загрузка не закончилась (при моих 30кб/с что чуть ниже средней скорости у пользователей). А глюки вообще убивают. Порежьте битмап на сектора, и двигайте только видемые, удаляйте все временные и не нужные данные. Расположите условия по найболее вероятному сценарию, что б не часто использованые условия не проверялись попросту и сформулируйте их так что б отбросить не нужные. Используйте ретурны как выход в функциях если остальная часть кода не имеет смысла. Проверяйте на "вшывость" так как при не обнаружении какой либо переменной идёт поиск в прототипах прототипы. Использйте найкрочайшие указатели путей _root, this, _parent. Старайтесь убивать ненужные "слушатели".
distinctive
13.01.2009, 19:03
SWFObject v2.0 - в Opera не открывается корректно.
koIIImarik
26.01.2009, 19:02
2 distinctive:
Можно узнат ьвашу версию Opera, у меня просто всё нормально работает в этом браузере.
2 __etc:
Спасибо за эту ссылку, я по незнанию уже больше года наверно работал с setInterval, передавая туда параметр объекта с именем varThis. Очень удобно, что этого можно не делать впредь. Спасибо.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.