|
Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » AJAX - интернет эксплорер виснет |
|
|
AJAX - интернет эксплорер виснет
|
Пользователь Сообщения: 67 |
переделал обычный чат (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
|
Профиль | Сайт | Отправить 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 }); пришлось переписывать класс 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; } }, ... эксплорер виснет только при медленном коннекте файрфокс не виснет от этого никогда помогите определить природу зависаний |
Отправлено: 10:29, 16-08-2006 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ночной странник Сообщения: 4050
|
Профиль | Сайт | Отправить PM | Цитировать VeshchiyOleg
1) посылай в асинхронном режиме... в IE он работает нормально... 2) просмотри в сторону библиотеки "прототайп" |
------- Отправлено: 10:33, 16-08-2006 | #3 |
Пользователь Сообщения: 67
|
Профиль | Сайт | Отправить PM | Цитировать 1)
Цитата:
я не первый столкнулся с подобным и не раз читал, что, якобы, эксплорер не освобождает память динамику использования памяти глянул - вроде ничего сверх обычного... такая проблема есть только в IE - опера уже три часа без затыков работает... а в эксплорере - обновляется сначала как положено - через пять секунд, потом через полминуты - минуту, а потом, когда доходит до интервала в 5-10 минут - у меня сдают нервы и я открываю эту же страницу в новом окне - ибо обновить текущую не могу физически - браузер умер. БЕЗ асинхронности в ie у меня стало работать более-менее сносно, хоть и с FF не сравнить. с включенной асинхронностью было еще хуже - поверьте - на практике почувствовал. отрицать очевидного не могу также по причине того, что юзвери, решившиеся на тестирование ругаються почем свет стоит. у них стало быть тоже виснет. у некоторых. а мне надо, чтобы работало у всех!!! ну хотя бы у большинства. 2) можно поподробней??? |
|
Отправлено: 11:26, 16-08-2006 | #4 |
Ночной странник Сообщения: 4050
|
Профиль | Сайт | Отправить PM | Цитировать VeshchiyOleg
1) да IE не освобождает память... http://ajaxian.com/by/topic/utility/page/4/ 2) вы используете у себя в часте верстку таблицами? 3) Цитата:
|
||
------- Отправлено: 11:36, 16-08-2006 | #5 |
Пользователь Сообщения: 67
|
Профиль | Сайт | Отправить 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(); //запускаем выполнятельный таймер Цитата:
один знакомый дизайнер говорит, буд-то бы так "правильнее"... пока не всё раскушал, но некоторые вещи действительно удобнее... тот чат, который на test - уже на div (кроме строки с кнопками и полем сообщения) а что от этого (способа верстки) зависит??? http://forum.oszone.net/thread-46763.html я собсна эту тему и нашел, но решил не оффтопить в ней... причем все-таки "прототайп"??? |
|
Отправлено: 12:40, 16-08-2006 | #6 |
Пользователь Сообщения: 67
|
Профиль | Сайт | Отправить PM | Цитировать http://webmascon.com/topics/technologies/13a.asp
красиво, аскетично... но, тем не менее не универсально - и два запроса параллельно не выйдет и весь этот код надо тащить к каждой аяксинке и доделывать под каждый отдельный случай создание класса унифицирует обращение к единообразным объектам к тому же Subsys_JsHttpRequest_Js выдает результаты даже тем, кто без XMLHttpRequest и отключил ActiveX, что немаловажно |
Отправлено: 12:54, 16-08-2006 | #7 |
Пользователь Сообщения: 67
|
Профиль | Сайт | Отправить PM | Цитировать http://ajaxian.com/by/topic/utility/page/4/
Drip: IE Leak Detector ??? и что он мне даст??? ну узнаю я, что эксплорер жрет память и не выплевывает... и что мне с того??? как бороться с эксплорером??? не использовать javascript??? кто пользовал Drip: IE Leak Detector ??? - нужная весчь??? |
Отправлено: 13:08, 16-08-2006 | #8 |
Ночной странник Сообщения: 4050
|
Профиль | Сайт | Отправить PM | Цитировать VeshchiyOleg
Цитата:
Цитата:
VeshchiyOleg в каком случае вы хотите посылать два запроса поралельно? |
||
------- Отправлено: 13:36, 16-08-2006 | #9 |
Пользователь Сообщения: 67
|
Профиль | Сайт | Отправить PM | Цитировать Цитата:
каждые полсекунды javascript ничего не делает ![]() Цитата:
|
|||
Отправлено: 15:00, 16-08-2006 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
не запускается интернет эксплорер | 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 |
|