Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Разное

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Действительно ли AJAX сильно тормозит?
 
 автор: Владимир55   (26.02.2013 в 19:30)   письмо автору
 
 

В свое время Loki писал о том, что AJAX съедает много трафика. Мне тогда показалось это преувеличением, поскольку количество информации, передаваемое на страницу, остается прежним, а служебные функции, осуществляющие связь, трафика или вообще не потребляют, или потребляют сущие крохи.

Но на деле все оказалось иначе.

Оснастив страницу шестью всплывающими формами, я очень удивился их медленному открытию. Форма совсем небольшая – название товара, артикул, цена и количество. Сначала появляется сама форма с пустыми полями и уже после этого поля начинают заполняться и раздвигаться в соответствии с размером записи. Примерно секунда, а иногда и две-три секунды, но это очень заметно.

Все тоже самое, но выполненное без AJAX, а на отдельной странице, открывается мгновенно (задержки глаз не ловит).

Действительно AJAX так сильно тормозит?
Можно ли что-то оптимизировать?

  Ответить  
 
 автор: psychomc   (26.02.2013 в 20:08)   письмо автору
 
   для: Владимир55   (26.02.2013 в 19:30)
 

хм, не понятно для чего вы применяете ajax. чтобы отправить данные с формы, или чтобы заполнить форму данными?

  Ответить  
 
 автор: Владимир55   (27.02.2013 в 10:33)   письмо автору
 
   для: psychomc   (26.02.2013 в 20:08)
 

И чтобы заполнить, и чтобы отправить. Но отправка производится достаточно быстро, так что с ней все нормально.

  Ответить  
 
 автор: psychomc   (27.02.2013 в 11:59)   письмо автору
 
   для: Владимир55   (27.02.2013 в 10:33)
 

Отправить понятно, а заполняте когда? В форму динамически подгружаются новые данные при каких-то манипуляциях пользователя, или после загрузки страницы в обычном режиме отправляется еще и ajax-запрос чтобы форму заполнить?

  Ответить  
 
 автор: Владимир55   (27.02.2013 в 15:33)   письмо автору
 
   для: psychomc   (27.02.2013 в 11:59)
 

Форма выводится предзаполненной.

  Ответить  
 
 автор: psychomc   (27.02.2013 в 16:08)   письмо автору
 
   для: Владимир55   (27.02.2013 в 15:33)
 

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

  Ответить  
 
 автор: Valick   (27.02.2013 в 20:11)   письмо автору
 
   для: Владимир55   (27.02.2013 в 15:33)
 

AJAX - это не сверхестественное необъяснимое явление, в конечном итоге это код, который работает на столько хорошо на сколько он написан.
подозреваю, что опрос сервера в вашем случае происходит по таймеру (например 1 раз в секунду) не зависимо от того производите вы какие либо действия или нет, отсюда и тормоза и лишний траффик

  Ответить  
 
 автор: admiral   (28.02.2013 в 11:39)   письмо автору
 
   для: Владимир55   (26.02.2013 в 19:30)
 

А форма генерируется сервером и отдается клиенту? Если да, то загружайте форму вместе со страницой, а контейнеру формы задайте display:none, тогда при вызове формы подгружайте только значение полей. Я так всегда делаю, работает мгновенно.

  Ответить  
 
 автор: Loki бред написал   (28.02.2013 в 16:30)
 
   для: Владимир55   (26.02.2013 в 19:30)
 

Ну вы сами подумайте. Одно дело получить страницу и перестроить ее полностью, или подменить содержимое DIVa небольшим кусочком информации, оставив за бортом стили, изображения, скрипты...

Можно конечно получать и HTML, CSS, JAVASCRIPT и применять комплекс изменений, например изменить тему текущей страницы, тогда уже есть смысл подумать стоит ли так делать, так как есть другие подводные камни, но и они имеют изящные решения.

Чтобы убедиться в большей скорости при использовании AJAX, просто подгрузите фрагмент статической информации, без запуска сессий, подлючений к базе, каких то там выборок, и т.п. и сравните это с перегрузкой страницы уже с шапкой head и всем прочив говном требующимся для ее отображения. Разница будет на лицо. Нужно просто не лениться и потестить.

Так же есть разница использовать для тестов js библиотеки или написать собственное быстрое и компактное решение реализации подгрузки данных.

;) Ну а так вообще AJAX тормозит страшно,особенно при подключении 50+ библиотек, неустойчив в поведении, глючит и вообще зачем это говно использовать. Какой то дурак сказал, одни проблемы только от него.

  Ответить  
 
 автор: confirm   (28.02.2013 в 18:24)   письмо автору
 
   для: Владимир55   (26.02.2013 в 19:30)
 

AJAX - это не какой-то особый протокол, говоря примитивно, это контейнер, который взаимодействует с сервером по тем же протоколам. Не он тормозной, а скорее у вас код этого взаимодействия необдуманный.

  Ответить  
 
 автор: cheops   (02.03.2013 в 08:34)   письмо автору
 
   для: Владимир55   (26.02.2013 в 19:30)
 

>Действительно AJAX так сильно тормозит?
Не совсем, но это можно легко обеспечить
>Можно ли что-то оптимизировать?
Да.

HTTP реализован на базе транспортного протокола TCP, который вообще говоря оптимизирован под загрузку объемных файлов, а не кучи мелких файлов, как в случае HTTP. Поэтому, чуть связь похуже, начинаются лютые тормоза и чем больше мелких файлов, тем более это становится заметно, особенно если речь о критичных файлов вроде AJAX-ответов. Ситуацию немного выправили в HTTP 1.1.

Как с этим бороться? Постарайтесь не выдавать в AJAX HTML-код, который требует загрузки изображений, JS/CSS-файлов, которых нет на уже загруженной странице. Вы правильно подметили, пользователи психологически привыкли дожидаться первой загрузки файлов, но от AJAX ждут моментальной реакции, ну или по крайней мере. Грузите по AJAX только текст, JSON, XML, все оформление пусть уже будет на странице.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования