Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   jquery ajax - оооочень медленно :( (https://javascript.ru/forum/jquery/35295-jquery-ajax-oooochen-medlenno.html)

lolka84 06.02.2013 17:30

jquery ajax - оооочень медленно :(
 
Всем привет.
Подскажите пожалуйста новичку, в чем заключается моя ошибка.

Задача простая: вывод данных из БД на страницу. Как это делаю я:

При загрузке страницы вызываю функцию
$(document).ready(function(e) {

	ajaxOutput("<?php echo HOST.'/index.php'; ?>","#idOutputTable","<?php echo $smile['ajax_error']; ?>","viewClients");
	
});


которая имеет вид

function ajaxOutput(page,outputId,errorText,ajaxName,str) {
		
	s = (str == undefined) ? "ajax=" + ajaxName : "ajax=" + ajaxName + "&findStr=" + str;
	
	$.ajax({
		
		type:"POST",
		url:page,
		data:s,
		dataType:"html",
		success: function(res) {//alert(res);
			
			$(outputId).html(res); 
			
			return true;
						
		},
		error: function() { 
			
			msg(errorText,"error",5000);
			
			return false;
		
		}
		
	});
	
	return false;

}

нечего криминального вроде нет.
Далее функция передает данные в php файл, который делает запрос к БД, формирует таблицу с результатами и отдает ее функции.

Что имею в итоге: ~250 (!!!) записей в БД и время их вывода на страницу около 5 (!!!) сек!

Что не так делаю то :(
Как это вообще ПРАВИЛЬНО делается ?
Заранее благодарю!

DjDiablo 06.02.2013 19:08

Непонятно почему таблица по ajax грузится а не вместе со страницей.

Минус в том что эта таблица небудет замечена поисковиками.
Плюс в том что страница будет грузится быстрее.


к самому js коду претензий вроде нет.

сколько времени занимает прямое обращение по url из строки браузера ?

lolka84 06.02.2013 19:17

Цитата:

Сообщение от DjDiablo (Сообщение 232041)
Непонятно почему таблица по ajax грузится а не вместе со страницей.

Если имеется в виду, что нужно вынести вызов функции за пределы $(document).ready(), то абсолютно ничего не меняется при этом.

Цитата:

Сообщение от DjDiablo (Сообщение 232041)
сколько времени занимает прямое обращение по url из строки браузера ?

Около 5-6 сек :(

Вообще, видимо на самом дело в php скрипте, но там тоже особо никакого криминала нет, если кратко:
switch($POST['ajax']) {
case "var":
$query = query("SELECT * FROM `table`");
echo "<table>";
foreach ($query as $key => $val) {
echo "<tr>";
echo "<td>".$val['id']."</td>";
echo "<td>".$val['name']."</td>";
echo "<td>".$val['sum']."</td>";
echo "</tr>";
}
echo "</table>";
break;


Понятно, что есть там кое-какие вычисления простенькие, но что б 5 секунд обрабатывалось ~250 строк...

lolka84 06.02.2013 19:22

Смотрите

success: function(res) {//alert(res);
$(outputId).html(res);
return true;
},


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

DjDiablo 06.02.2013 19:24

Цитата:

Если имеется в виду, что нужно вынести вызов функции за пределы $(document).ready()
нет, имелся ввиду полный отказ от ajax

впрочем дело тут не в ajax.
ссылку на страницу дайте пожалуйста

странно что подвисает, возможно запрос не асинхронный.
добавьте async :true, быстрее не станет , но должно решить проблему с подвисанием браузера

lolka84 06.02.2013 19:26

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

Ссылку сейчас сделаю.

lolka84 06.02.2013 19:30

http://mytavatuy.ru/portfolio/3smile/

DjDiablo 06.02.2013 19:33

это что такое ?
http://test1.ru/3smile/?page=404

lolka84 06.02.2013 19:49

Это просто локальный адрес.

з.ы. async :true проблему подвисания не решило :(

DjDiablo 06.02.2013 19:57

короче насколько я понял всё работает отлично.
просто время отклика сервера около 3х секунд
самый разумный способ добится повышения производительности это атказаться от ajax, потому что из ajax 3 секунды ожидания вы невыкинете ни как.

всё что можно попробывать сделать для ajax это асинхронная загрузка и смена хостинга/тарифа

Это неокончательное утверждение, а поверхностная оценка.
Дополнительно можете замерить время генерации таблицы на сервере, но я почти уверен что оно занемает не более пары сотен милисекунд


Часовой пояс GMT +3, время: 22:31.