Почему некоторые вызовы AJAX завершаются значительно дольше, чем другие, когда URL имеют одинаковое время ответа? - PullRequest
5 голосов
/ 22 июня 2011

чтобы упростить мою ситуацию;У меня есть 3 страницы PHP.Два из них добавляют и удаляют строки из базы данных соответственно.Третий выбирает все строки, кодирует их как JSON и печатает результат.

Я рассчитал время выполнения всех страниц, которое колеблется от 0,001 до 0,004 секунды.Ниже приведены временные параметры вызовов Ajax:

Получить всю таблицу как JSON: 8-12msДобавить строку: 990-1010мсУдалить строку: 990-1010мс

Время отклика времени добавления и удаления вызывает ненужную медлительность в моем приложении, учитывая, что время выполнения PHP - просто доли секунды, а их вывод - просто «1» для успеха и «0» для сбоя(По сравнению с вызовом выборки, который выводит до 100 строк (~ 10 столбцов) данных в формате JSON)

Все мои времена возврата Ajax измеряются в Firebug.Все Ajax-вызовы выполняются через jQuery ($.ajax()).

Я предполагаю, что это как-то связано с Firefox, не учитывающим ответ на запрос GET, если он не получил определенное количество байтов или символов, иВремя отклика в 1 секунду является каким-то тайм-аутом.

Есть ли у вас какие-либо соображения по этому поводу?


Я также рассчитал время загрузки AJAX в Chrome и Opera (в среднем):

Опера:* Все вызовы AJAX ~ 15 мс

Chrome:* Удалить строки и извлечь строки: ~ 25 мс* Добавить строку: ~ 350 мс

Мое приложение работает быстро и отзывчиво в Opera, но в разной степени вяло во всех других браузерах.Именно поэтому мне до сих пор неясно.


Я также рассчитал IE 9, который работает практически идентично Opera.Мое приложение теперь работает быстро в двух браузерах.

Ответы [ 3 ]

1 голос
/ 22 июня 2011

Очевидно, что некоторые браузеры испытывают загадочные побочные эффекты от использования localhost вместо 127.0.0.1 в URL.Добавленная полная секунда задержки была одной из них.Использование 127.0.0.1 решило проблему для меня.

0 голосов
/ 22 июня 2011

У меня нет информации, на которой можно основывать это, но сейчас я думаю, что один из следующих виновников:

  • Медленный диск (и) - для добавления и удаления строк может потребоваться больше доступа к диску, чем для чтения (плюс MySQL может выполнять кэширование запросов)
  • Индексы - MySQL должен обновлять свои индексы при изменении или добавлении столбца

Запрет на профилирование вашего кода.Используйте xdebug и / или выполняйте запросы MySQL напрямую через MySQL, чтобы узнать, сколько времени они занимают.

0 голосов
/ 22 июня 2011

будет лучше, если вы используете HTTPWatch. Он сообщит вам точное время всех js-файлов, css, рендеринга страниц и т. Д., Чтобы вы могли проанализировать, какой вызов занимает больше времени и почему.не уверен, что я ответил на ваш вопрос или нет, но надеюсь, что вы можете получить некоторую помощь от HTTPWatch.

Здесь у вас есть хорошая статья, которая скажет вамКак улучшить производительность сайта за счет минимизации времени запроса.

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