Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » AJAX - интернет эксплорер виснет

Ответить
Настройки темы
AJAX - интернет эксплорер виснет

Пользователь


Сообщения: 67
Благодарности: 5

Профиль | Сайт | Отправить PM | Цитировать


переделал обычный чат (wwwhl.ru, извините, но если кто надумает посмотреть - надо зарегистрироваться) в чат по технологии AJAX (выложил пока только на тестовый домен test.wwwhl.ru логины и пароли как и на www.wwwhl.ru).
Сначала использовал библиотеки xajax, которые немного переделал под себя (ничего криминального я не менял), но в них в принципе невозможно отправлять два и более параллельных запросов на сервер с одной страницы [а в чем тогда асинхронность??? не пойму... ]. Да и эксплорер вис намертво при попытке послать два запроса параллельно (после переделки скриптов). Решил, что что-то тут не так...
Как только убедился в этом окончательно, переписал всё под Subsys_JsHttpRequest_Js. Вышло неплохо, но проблема зависания осталась...
В итоге результат:
Mozilla FireFox 1.5.0.4 - всё работает влёт!!! ни зависаний, ни тормозов!!!
IE 6.0 - сначала вроде всё идет неплохо, но уже через 5-10 минут использования ActiveX браузер начинает тихо умирать... сначала периодически подвисает (и система при этом тормозит не по деццки), а потом вообще - оживет на пару секунд и опять уходит в себя...
Opera 9.0 - на удивление все в порядке вроде... но больше 15 минут не тестировал...

кто знает, из-за чего эксплорер виснет и как с этим бороться???

Отправлено: 10:04, 16-08-2006

 

Пользователь


Сообщения: 67
Благодарности: 5

Профиль | Сайт | Отправить PM | Цитировать


немного подробностей:
обновление самого чата производится по таймауту через 5 секунд после последнего обновления (не каждые 5 секунд - прошу не путать)
обновление списка присутствующих - через минуту после последнего обновления.

где-то вычитал, будто эксплореру дабы не зависал, надо не асинхронные запросы посылать...

Код: Выделить весь код
	req.onreadystatechange = function() {
		if (req.readyState == 4) {
...
		}
	}
	req.caching = false;
	req.open('POST', 'inc/chat.request.php?uid=' + uid, false);
	req.send({ call: 'teamsUpdate', Ordr: Ordr });
в ie работает, в файрфоксе - отказывается...
пришлось переписывать класс Subsys_JsHttpRequest_Js:
Код: Выделить весь код
...
		_asyncFlag:			null,
...
		open: function(method, url, asyncFlag, username, password) {
			this._openArg = {
				'method':		method,
				'url':			url,
				'asyncFlag':	asyncFlag != null? asyncFlag : this._asyncFlag,
				'username':		username != null? username : '',
				'password':		password != null? password : ''
			};
			this._id = null;
			this._xmlReq = null;
			this._reqHeaders = [];
			return true;
		},
...
		// Constructor.
		_construct: function() {
			if (window.XMLHttpRequest) {
				this._asyncFlag = true;
			} else {
				this._asyncFlag = false;
			}
		},
...
теперь, когда создается с пустым третьим параметром, всё везде работает:
Код: Выделить весь код
	req.open('POST', 'inc/chat.request.php?uid=' + uid);
эксплорер виснет только при медленном коннекте
файрфокс не виснет от этого никогда

помогите определить природу зависаний

Отправлено: 10:29, 16-08-2006 | #2



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

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ночной странник


Contributor


Сообщения: 4050
Благодарности: 83

Профиль | Сайт | Отправить PM | Цитировать


VeshchiyOleg
1) посылай в асинхронном режиме... в IE он работает нормально...
2) просмотри в сторону библиотеки "прототайп"

-------
можно практически все, но просто мы это еще не знаем.
главный враг програмиста это копипастинг
За хорошее сообщение не забываем нажимать ссылочку "Полезное сообщение"!


Отправлено: 10:33, 16-08-2006 | #3


Пользователь


Сообщения: 67
Благодарности: 5

Профиль | Сайт | Отправить PM | Цитировать


1)
Цитата:
в IE он работает нормально...
да я не спорю - первые пять-десять минут - да... но потом.... см.выше
я не первый столкнулся с подобным и не раз читал, что, якобы, эксплорер не освобождает память
динамику использования памяти глянул - вроде ничего сверх обычного...
такая проблема есть только в IE - опера уже три часа без затыков работает...
а в эксплорере - обновляется сначала как положено - через пять секунд, потом через полминуты - минуту, а потом, когда доходит до интервала в 5-10 минут - у меня сдают нервы и я открываю эту же страницу в новом окне - ибо обновить текущую не могу физически - браузер умер.
БЕЗ асинхронности в ie у меня стало работать более-менее сносно, хоть и с FF не сравнить.
с включенной асинхронностью было еще хуже - поверьте - на практике почувствовал.
отрицать очевидного не могу также по причине того, что юзвери, решившиеся на тестирование ругаються почем свет стоит. у них стало быть тоже виснет. у некоторых. а мне надо, чтобы работало у всех!!! ну хотя бы у большинства.

2) можно поподробней???

Отправлено: 11:26, 16-08-2006 | #4


Ночной странник


Contributor


Сообщения: 4050
Благодарности: 83

Профиль | Сайт | Отправить PM | Цитировать


VeshchiyOleg
1) да IE не освобождает память...
http://ajaxian.com/by/topic/utility/page/4/

2) вы используете у себя в часте верстку таблицами?

3)
Цитата:
можно поподробней???
http://forum.oszone.net/thread-46763.html

-------
можно практически все, но просто мы это еще не знаем.
главный враг програмиста это копипастинг
За хорошее сообщение не забываем нажимать ссылочку "Полезное сообщение"!


Отправлено: 11:36, 16-08-2006 | #5


Пользователь


Сообщения: 67
Благодарности: 5

Профиль | Сайт | Отправить PM | Цитировать


кстати, я, используя xajax организовывал некое подобие стека.
суть в следующем:
Код: Выделить весь код
var FuncToRun = new Array(); //создаем массив для помещения в него функций для запуска

function stekRun(){
    if (FuncToRun.length > 0) { //если есть что выполнять
        eval(FuncToRun[0]);  //выполняем первое, что есть
        for (i = 0; i < FuncToRun.length - 1; i++) {//смещаем всё на один (убираем первый)
            FuncToRun[i] = FuncToRun[i + 1];
        }
        FuncToRun.length--; //уменьшаем длину на единичку
    } else {
        window.setTimeout('stekRun()', 500); // запускаем таймер по-новой
    }
}

function myFuncTimer() {
    FuncToRun[FuncToRun.length] = 'myFunc('+arguments.join(',')+')'; //помещаем функцию в стек
    window.setTimeout('stekRun()', 500); // запускаем таймер по-новой
    window.setTimeout('myFuncTimer('+arguments.join(',')+')', 5000);  // запускаем таймер по-новой
}

function myFunc(){
// здесь что-то делать
}

myFuncTimer(); //запускаем таймер функции
stekRun(); //запускаем выполнятельный таймер


Цитата:
вы используете у себя в часте верстку таблицами?
раньше - да и вообще - мне таблицами удобней... теперь перехожу постеменно на div 'ы
один знакомый дизайнер говорит, буд-то бы так "правильнее"...
пока не всё раскушал, но некоторые вещи действительно удобнее...
тот чат, который на test - уже на div (кроме строки с кнопками и полем сообщения)
а что от этого (способа верстки) зависит???

http://forum.oszone.net/thread-46763.html
я собсна эту тему и нашел, но решил не оффтопить в ней...
причем все-таки "прототайп"???

Отправлено: 12:40, 16-08-2006 | #6


Пользователь


Сообщения: 67
Благодарности: 5

Профиль | Сайт | Отправить PM | Цитировать


http://webmascon.com/topics/technologies/13a.asp
красиво, аскетично... но, тем не менее не универсально - и два запроса параллельно не выйдет
и весь этот код надо тащить к каждой аяксинке и доделывать под каждый отдельный случай

создание класса унифицирует обращение к единообразным объектам

к тому же Subsys_JsHttpRequest_Js выдает результаты даже тем, кто без XMLHttpRequest и отключил ActiveX, что немаловажно

Отправлено: 12:54, 16-08-2006 | #7


Пользователь


Сообщения: 67
Благодарности: 5

Профиль | Сайт | Отправить PM | Цитировать


http://ajaxian.com/by/topic/utility/page/4/
Drip: IE Leak Detector ???
и что он мне даст???
ну узнаю я, что эксплорер жрет память и не выплевывает... и что мне с того???
как бороться с эксплорером???
не использовать javascript???


кто пользовал Drip: IE Leak Detector ??? - нужная весчь???

Отправлено: 13:08, 16-08-2006 | #8


Ночной странник


Contributor


Сообщения: 4050
Благодарности: 83

Профиль | Сайт | Отправить PM | Цитировать


VeshchiyOleg
Цитата:
раньше - да и вообще - мне таблицами удобней... теперь перехожу постеменно на div 'ы
один знакомый дизайнер говорит, буд-то бы так "правильнее"...
пока не всё раскушал, но некоторые вещи действительно удобнее...
тот чат, который на test - уже на div (кроме строки с кнопками и полем сообщения)
а что от этого (способа верстки) зависит???
дело в том что у IE есть большай проблема с отображением таблиц... он очень долго их парсит... очень долго... и из за этого зачастую и могут случаться минутные подвисания.

Цитата:
window.setTimeout('stekRun()', 500)
это 0,5с а не 5с...

VeshchiyOleg
в каком случае вы хотите посылать два запроса поралельно?

-------
можно практически все, но просто мы это еще не знаем.
главный враг програмиста это копипастинг
За хорошее сообщение не забываем нажимать ссылочку "Полезное сообщение"!


Отправлено: 13:36, 16-08-2006 | #9


Пользователь


Сообщения: 67
Благодарности: 5

Профиль | Сайт | Отправить PM | Цитировать


Цитата:
Цитата:
Цитата:
window.setTimeout('stekRun()', 500)
это 0,5с а не 5с...
ну да... важно, чтобы проверка стека была чаще его заполнения
каждые полсекунды javascript ничего не делает ))

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

Отправлено: 15:00, 16-08-2006 | #10



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » AJAX - интернет эксплорер виснет

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
не запускается интернет эксплорер Xwolf Microsoft Windows 2000/XP 2 26-04-2007 09:45
Закрывается Интернет Эксплорер!!! Drony Microsoft Windows 2000/XP 10 15-03-2007 03:06
Интернет - [решено] Интернет Эксплорер 7 + кэш pr-lp Microsoft Windows Vista 1 28-12-2006 21:24
проблема с броузером Интернет эксплорер imis Хочу все знать 4 29-05-2004 20:04
Интернет эксплорер /експлорер   Vadslav Microsoft Windows 95/98/Me (архив) 10 09-03-2004 15:06




 
Переход