|
|
|
|
|
для: Владимир55
(26.02.2013 в 19:30)
| | >Действительно AJAX так сильно тормозит?
Не совсем, но это можно легко обеспечить
>Можно ли что-то оптимизировать?
Да.
HTTP реализован на базе транспортного протокола TCP, который вообще говоря оптимизирован под загрузку объемных файлов, а не кучи мелких файлов, как в случае HTTP. Поэтому, чуть связь похуже, начинаются лютые тормоза и чем больше мелких файлов, тем более это становится заметно, особенно если речь о критичных файлов вроде AJAX-ответов. Ситуацию немного выправили в HTTP 1.1.
Как с этим бороться? Постарайтесь не выдавать в AJAX HTML-код, который требует загрузки изображений, JS/CSS-файлов, которых нет на уже загруженной странице. Вы правильно подметили, пользователи психологически привыкли дожидаться первой загрузки файлов, но от AJAX ждут моментальной реакции, ну или по крайней мере. Грузите по AJAX только текст, JSON, XML, все оформление пусть уже будет на странице. | |
|
|
|
|
|
|
|
для: Владимир55
(26.02.2013 в 19:30)
| | AJAX - это не какой-то особый протокол, говоря примитивно, это контейнер, который взаимодействует с сервером по тем же протоколам. Не он тормозной, а скорее у вас код этого взаимодействия необдуманный. | |
|
|
|
|
автор: Loki бред написал (28.02.2013 в 16:30) |
|
|
для: Владимир55
(26.02.2013 в 19:30)
| | Ну вы сами подумайте. Одно дело получить страницу и перестроить ее полностью, или подменить содержимое DIVa небольшим кусочком информации, оставив за бортом стили, изображения, скрипты...
Можно конечно получать и HTML, CSS, JAVASCRIPT и применять комплекс изменений, например изменить тему текущей страницы, тогда уже есть смысл подумать стоит ли так делать, так как есть другие подводные камни, но и они имеют изящные решения.
Чтобы убедиться в большей скорости при использовании AJAX, просто подгрузите фрагмент статической информации, без запуска сессий, подлючений к базе, каких то там выборок, и т.п. и сравните это с перегрузкой страницы уже с шапкой head и всем прочив говном требующимся для ее отображения. Разница будет на лицо. Нужно просто не лениться и потестить.
Так же есть разница использовать для тестов js библиотеки или написать собственное быстрое и компактное решение реализации подгрузки данных.
;) Ну а так вообще AJAX тормозит страшно,особенно при подключении 50+ библиотек, неустойчив в поведении, глючит и вообще зачем это говно использовать. Какой то дурак сказал, одни проблемы только от него. | |
|
|
|
|
|
|
|
для: Владимир55
(26.02.2013 в 19:30)
| | А форма генерируется сервером и отдается клиенту? Если да, то загружайте форму вместе со страницой, а контейнеру формы задайте display:none, тогда при вызове формы подгружайте только значение полей. Я так всегда делаю, работает мгновенно. | |
|
|
|
|
|
|
|
для: Владимир55
(27.02.2013 в 15:33)
| | AJAX - это не сверхестественное необъяснимое явление, в конечном итоге это код, который работает на столько хорошо на сколько он написан.
подозреваю, что опрос сервера в вашем случае происходит по таймеру (например 1 раз в секунду) не зависимо от того производите вы какие либо действия или нет, отсюда и тормоза и лишний траффик | |
|
|
|
|
|
|
|
для: Владимир55
(27.02.2013 в 15:33)
| | в принципе, наверное ajax может работать немного медленее, чем обычный запрос в определенных случаях. думаю, это зависит от браузера и от производительности пк. данные отправляются и принимаются на стороне клиента, и скорее всего в этих двух случаях проходят еще какую-то дополнительную обработку на стороне клиента. вот это скорее всего и съедает какие-то лишние доли секунды. а по поводу траффика сложно сказать, ajax обычно наоборот его сильно экономит, если применять к месту | |
|
|
|
|
|
|
|
для: psychomc
(27.02.2013 в 11:59)
| | Форма выводится предзаполненной. | |
|
|
|
|
|
|
|
для: Владимир55
(27.02.2013 в 10:33)
| | Отправить понятно, а заполняте когда? В форму динамически подгружаются новые данные при каких-то манипуляциях пользователя, или после загрузки страницы в обычном режиме отправляется еще и ajax-запрос чтобы форму заполнить? | |
|
|
|
|
|
|
|
для: psychomc
(26.02.2013 в 20:08)
| | И чтобы заполнить, и чтобы отправить. Но отправка производится достаточно быстро, так что с ней все нормально. | |
|
|
|
|
|
|
|
для: Владимир55
(26.02.2013 в 19:30)
| | хм, не понятно для чего вы применяете ajax. чтобы отправить данные с формы, или чтобы заполнить форму данными? | |
|
|
|
|