Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.02.2013, 17:30
Кандидат Javascript-наук
Отправить личное сообщение для lolka84 Посмотреть профиль Найти все сообщения от lolka84
 
Регистрация: 23.08.2010
Сообщений: 123

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 (!!!) сек!

Что не так делаю то
Как это вообще ПРАВИЛЬНО делается ?
Заранее благодарю!
Ответить с цитированием
  #2 (permalink)  
Старый 06.02.2013, 19:08
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

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

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


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

сколько времени занимает прямое обращение по url из строки браузера ?
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 06.02.2013 в 19:10.
Ответить с цитированием
  #3 (permalink)  
Старый 06.02.2013, 19:17
Кандидат Javascript-наук
Отправить личное сообщение для lolka84 Посмотреть профиль Найти все сообщения от lolka84
 
Регистрация: 23.08.2010
Сообщений: 123

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

Сообщение от DjDiablo Посмотреть сообщение
сколько времени занимает прямое обращение по 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 строк...
Ответить с цитированием
  #4 (permalink)  
Старый 06.02.2013, 19:22
Кандидат Javascript-наук
Отправить личное сообщение для lolka84 Посмотреть профиль Найти все сообщения от lolka84
 
Регистрация: 23.08.2010
Сообщений: 123

Смотрите

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


alert() срабатывает через полсекунды после входа на страницу. Т.е. это значит, что функция отработала и данные получила, правильно ? После этого страница (не браузер) подвисает секунды на 4 и только после этого загружается контент в див. Как это понимать то ? Компьютер достаточно мощный, браузер хром последней версии.. Нечего не понимаю
Ответить с цитированием
  #5 (permalink)  
Старый 06.02.2013, 19:24
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

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

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

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

Последний раз редактировалось DjDiablo, 06.02.2013 в 19:30.
Ответить с цитированием
  #6 (permalink)  
Старый 06.02.2013, 19:26
Кандидат Javascript-наук
Отправить личное сообщение для lolka84 Посмотреть профиль Найти все сообщения от lolka84
 
Регистрация: 23.08.2010
Сообщений: 123

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

Ссылку сейчас сделаю.
Ответить с цитированием
  #7 (permalink)  
Старый 06.02.2013, 19:30
Кандидат Javascript-наук
Отправить личное сообщение для lolka84 Посмотреть профиль Найти все сообщения от lolka84
 
Регистрация: 23.08.2010
Сообщений: 123

http://mytavatuy.ru/portfolio/3smile/
Ответить с цитированием
  #8 (permalink)  
Старый 06.02.2013, 19:33
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

это что такое ?
http://test1.ru/3smile/?page=404
__________________
Лучше калымить в гандурасе чем гандурасить на колыме
Ответить с цитированием
  #9 (permalink)  
Старый 06.02.2013, 19:49
Кандидат Javascript-наук
Отправить личное сообщение для lolka84 Посмотреть профиль Найти все сообщения от lolka84
 
Регистрация: 23.08.2010
Сообщений: 123

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

з.ы. async :true проблему подвисания не решило
Ответить с цитированием
  #10 (permalink)  
Старый 06.02.2013, 19:57
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

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

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

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

Последний раз редактировалось DjDiablo, 06.02.2013 в 20:04.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Jquery, AJAX и все IE prowoke AJAX и COMET 7 01.12.2012 22:34
jQuery Click() не работает на объекте, созданном Ajax vovabigov jQuery 13 09.09.2012 14:25
Какая разница между post запросами jquery и ajax? Rooner jQuery 2 18.06.2012 14:29
JQuery AJAX, поймать разрыв соединения ilya.tk AJAX и COMET 10 30.12.2010 17:13
Не работает jQuery меню с AJAX eugene1986 jQuery 0 08.07.2010 18:49