Моя страница загружается слишком долго!Как мне сократить время загрузки страницы! - PullRequest
0 голосов
/ 10 июля 2010

Привет, ребята, я тестирую свое приложение. Используя файербаги, я обнаружил, что мое приложение ужасно медленное и должно ускоряться.

У меня есть один огромный скомпилированный файл javascript размером более 700 КБ, который включает все мои библиотеки js, но пугающая часть - самому коду требуется от 20 до 40 секунд для запуска. Теперь дело в том, что мой код основан на Zend Framework и извлекает электронные письма из почтовой папки - однако это слишком медленно. Как я могу ускорить его - как я могу сказать, какая часть кода берет свое?

========================

Javascript является частью iissue, но в то же время другая проблема заключается в том, что страница, о которой я говорю, в частности, читает через почтовый ящик. Это фронт для интерфейса веб-почты, есть звонки из базы данных, но время кажется незначительным. Посмотрите на следующие выпуски, которые я сделал, используя microtime, чтобы рассчитать время получения сообщений и фрагментов кода.

Я потратил время на запуск каждого фрагмента кода и прикрепил к нему метку в отчете, и вот результат: первое число - это время в микросекундах, а затем число, которое я помечаю для этого фрагмента кода. что заняло время. На какой фрагмент я должен следить? Те, которые имеют повторяющиеся метки, так выполняются в цикле - это почтовый клиент, и каждое сообщение извлекается как цикл.

[Log Entry 2010-07-10T10:49:44+00:00] 0.000446:::::01

[Log Entry 2010-07-10T10:49:45+00:00] -0.100127:::::02

[Log Entry 2010-07-10T10:49:46+00:00] 0.191738:::::get message

[Log Entry 2010-07-10T10:49:46+00:00] 2.0E-5:::::get headers

[Log Entry 2010-07-10T10:49:46+00:00] 0.000776:::::contacts check

[Log Entry 2010-07-10T10:49:46+00:00] 0.174134:::::non multipart

[Log Entry 2010-07-10T10:49:47+00:00] -0.842978:::::get message

[Log Entry 2010-07-10T10:49:47+00:00] 1.2E-5:::::get headers

[Log Entry 2010-07-10T10:49:47+00:00] 0.000834:::::contacts check

[Log Entry 2010-07-10T10:49:47+00:00] 0.179016:::::non multipart

[Log Entry 2010-07-10T10:49:48+00:00] -0.851685:::::get message

[Log Entry 2010-07-10T10:49:48+00:00] 1.8E-5:::::get headers

[Log Entry 2010-07-10T10:49:48+00:00] 0.001334:::::contacts check

[Log Entry 2010-07-10T10:49:49+00:00] -0.587962:::::html part message

[Log Entry 2010-07-10T10:49:49+00:00] 0.138799:::::get message

[Log Entry 2010-07-10T10:49:49+00:00] 1.9E-5:::::get headers

[Log Entry 2010-07-10T10:49:49+00:00] 0.002155:::::contacts check

[Log Entry 2010-07-10T10:49:49+00:00] 0.181675:::::non multipart

[Log Entry 2010-07-10T10:49:50+00:00] -0.856142:::::get message

[Log Entry 2010-07-10T10:49:50+00:00] 1.6E-5:::::get headers

[Log Entry 2010-07-10T10:49:50+00:00] 0.000803:::::contacts check

[Log Entry 2010-07-10T10:49:50+00:00] 0.178046:::::non multipart

[Log Entry 2010-07-10T10:49:50+00:00] 0.141544:::::get message

[Log Entry 2010-07-10T10:49:50+00:00] 1.8E-5:::::get headers

[Log Entry 2010-07-10T10:49:51+00:00] 0.001167:::::contacts check

[Log Entry 2010-07-10T10:49:52+00:00] -0.188653:::::html part message

[Log Entry 2010-07-10T10:49:52+00:00] 0.148198:::::get message

[Log Entry 2010-07-10T10:49:52+00:00] 2.0E-5:::::get headers

[Log Entry 2010-07-10T10:49:53+00:00] 0.00284:::::contacts check

[Log Entry 2010-07-10T10:49:53+00:00] 0.336415:::::html part message

[Log Entry 2010-07-10T10:49:53+00:00] 0.140683:::::get message

[Log Entry 2010-07-10T10:49:53+00:00] 2.0E-5:::::get headers

[Log Entry 2010-07-10T10:49:54+00:00] 0.003539:::::contacts check

[Log Entry 2010-07-10T10:49:54+00:00] 0.311735:::::html part message

[Log Entry 2010-07-10T10:49:54+00:00] 0.143097:::::get message

[Log Entry 2010-07-10T10:49:54+00:00] 1.9E-5:::::get headers

[Log Entry 2010-07-10T10:49:55+00:00] 0.001392:::::contacts check

[Log Entry 2010-07-10T10:49:55+00:00] 0.313101:::::html part message

[Log Entry 2010-07-10T10:49:55+00:00] 0.146926:::::get message

[Log Entry 2010-07-10T10:49:55+00:00] 1.7E-5:::::get headers

[Log Entry 2010-07-10T10:49:55+00:00] 0.000743:::::contacts check

[Log Entry 2010-07-10T10:49:56+00:00] 0.173081:::::non multipart

Ответы [ 5 ]

1 голос
/ 10 июля 2010

Для профилирования вы можете попробовать Каков наилучший способ профилировать выполнение JavaScript? или https://developer.mozilla.org/en/Venkman (см. здесь ).

Если толькоJS работает с большим количеством данных, и я предполагаю, что проблема заключается в том, чтобы выполнять множество вызовов API обратно на веб-сервер (AJAX и аналогичные).Это должно быть легко исправить, скажем, с помощью API-функций, которые принимают и возвращают списки, если у вас есть их, которые принимают и возвращают единичные единицы информации.getText(1,2,5,6) против getText(1),getText(2),...

Или код на самом сервере поврежден, поэтому серверу требуется более 20 секунд, чтобы ответить на какой-либо JS-запрос, на который ему нужно ответить, прежде чем он на самом деле создаст вашстраница ...

0 голосов
/ 10 июля 2010

Чтобы обнаружить некоторые проблемы, связанные с содержимым, передаваемым в браузер, установите плагин YSlow в Mozilla Firefox. Вы получите оценки по различным параметрам: количество запросов http, сжатие, динамический CSS и т. Д.

0 голосов
/ 10 июля 2010

Обычно запросы SQL, написанные неправильно или повторяющиеся в цикле, ответственны за замедление работы сайта. Файл javascript размером 700 КБ не сильно замедлит работу. Попробуйте выяснить, какие запросы выполняются слишком долго, или, если в цикле выполняются какие-то запросы, попробуйте найти другой способ получить тот же результат без циклов.

0 голосов
/ 10 июля 2010

Трудно сказать, где проблема может быть из вопроса, но если это сама загрузка, вы можете установить YSlow для Firebug.

Это проанализирует ваш сайт при загрузке. Затем он оценит его и определит проблемные области - порекомендует улучшения (которые часто легко выигрывают), чтобы помочь улучшить ситуацию. Это поможет выявить любые проблемы с реальными ресурсами веб-страницы.

0 голосов
/ 10 июля 2010

Вы можете использовать XDebug с {K, Win} Cachegrind для выполнения профилирования и поиска медленных частей вашего кода.KCachegrind работает на Linux и лучше, чем Wincachegrind.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...