![]() |
AJAX - интернет эксплорер виснет
переделал обычный чат (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 минут не тестировал... кто знает, из-за чего эксплорер виснет и как с этим бороться??? |
немного подробностей:
обновление самого чата производится по таймауту через 5 секунд после последнего обновления (не каждые 5 секунд - прошу не путать) обновление списка присутствующих - через минуту после последнего обновления. где-то вычитал, будто эксплореру дабы не зависал, надо не асинхронные запросы посылать... Код:
req.onreadystatechange = function() { пришлось переписывать класс Subsys_JsHttpRequest_Js: Код:
... Код:
req.open('POST', 'inc/chat.request.php?uid=' + uid); файрфокс не виснет от этого никогда помогите определить природу зависаний |
VeshchiyOleg
1) посылай в асинхронном режиме... в IE он работает нормально... 2) просмотри в сторону библиотеки "прототайп" |
1)
Цитата:
я не первый столкнулся с подобным и не раз читал, что, якобы, эксплорер не освобождает память динамику использования памяти глянул - вроде ничего сверх обычного... такая проблема есть только в IE - опера уже три часа без затыков работает... а в эксплорере - обновляется сначала как положено - через пять секунд, потом через полминуты - минуту, а потом, когда доходит до интервала в 5-10 минут - у меня сдают нервы и я открываю эту же страницу в новом окне - ибо обновить текущую не могу физически - браузер умер. БЕЗ асинхронности в ie у меня стало работать более-менее сносно, хоть и с FF не сравнить. с включенной асинхронностью было еще хуже - поверьте - на практике почувствовал. отрицать очевидного не могу также по причине того, что юзвери, решившиеся на тестирование ругаються почем свет стоит. у них стало быть тоже виснет. у некоторых. а мне надо, чтобы работало у всех!!! ну хотя бы у большинства. 2) можно поподробней??? |
VeshchiyOleg
1) да IE не освобождает память... http://ajaxian.com/by/topic/utility/page/4/ 2) вы используете у себя в часте верстку таблицами? 3) Цитата:
|
кстати, я, используя xajax организовывал некое подобие стека.
суть в следующем: Код:
var FuncToRun = new Array(); //создаем массив для помещения в него функций для запуска Цитата:
один знакомый дизайнер говорит, буд-то бы так "правильнее"... пока не всё раскушал, но некоторые вещи действительно удобнее... тот чат, который на test - уже на div (кроме строки с кнопками и полем сообщения) а что от этого (способа верстки) зависит??? http://forum.oszone.net/thread-46763.html я собсна эту тему и нашел, но решил не оффтопить в ней... причем все-таки "прототайп"??? |
http://webmascon.com/topics/technologies/13a.asp
красиво, аскетично... но, тем не менее не универсально - и два запроса параллельно не выйдет и весь этот код надо тащить к каждой аяксинке и доделывать под каждый отдельный случай создание класса унифицирует обращение к единообразным объектам к тому же Subsys_JsHttpRequest_Js выдает результаты даже тем, кто без XMLHttpRequest и отключил ActiveX, что немаловажно |
http://ajaxian.com/by/topic/utility/page/4/
Drip: IE Leak Detector ??? и что он мне даст??? ну узнаю я, что эксплорер жрет память и не выплевывает... и что мне с того??? как бороться с эксплорером??? не использовать javascript??? кто пользовал Drip: IE Leak Detector ??? - нужная весчь??? |
VeshchiyOleg
Цитата:
Цитата:
VeshchiyOleg в каком случае вы хотите посылать два запроса поралельно? |
Цитата:
каждые полсекунды javascript ничего не делает :))) Цитата:
|
VeshchiyOleg
Цитата:
2) надеюсь вы запрашиваете не все сообщения сразу, а только обновившиеся? 3) http://sarissa.sourceforge.net/doc/ - реально помылает запросы в несколько потоков. |
1) как я уже говорил выше, процессы друг с другом никак не связанные, так что не вижу смысла связывать их принудительно - а если мне понадобится еще что-нибудь обновить??? а отправка сообщений???
2) да, и дописывается в innerHTML. как только длина innerHTML превышает 32000 - лишнее сверху обрезается. кроме того сообщения приходят в виде хэша - и название написавшего тоже генерится javascript`oм. и еще много чего - целью себе я ставил не столько приобщение к модным направлениям типа AJAX, а снижение трафика. результатом получил тормоза в наиболее часто используем браузере (и не надо меня убеждать в обратном) 3) чем sarissa принципиально отличается от Subsys_JsHttpRequest_Js??? prototype.js - это понятно, но слишком монументально - многое из реализованного не требуется и поэтому "из пушки по воробьям" палить не будем :) мне кажется, что тут все-таки либо в ActiveX идет затык либо в javascript под ie (вернее тогда уж не javascript, a JScript) создавать ГЛОБАЛЬНЫЕ объекты-обновлялки (в смысле за пределами функции) мне почему-то не хочется... почему - пока объяснить не могу но тогда можно будет сделать им abort() и по новой open() send() |
VeshchiyOleg
на самом деле идея использования AJAX в данном конкретном случае на факт что вообще оправдана... особых преимуществ это концепция врятли дает... Цитата:
|
Цитата:
на самом деле ныне действующий на основном сайте чат написан, в общем-то, практически по этой же концепции еще три года назад, за исключением той разницы, что используется не объект XMLHttpRequest, а скрытый фрейм |
VeshchiyOleg
Цитата:
|
таким образом, единственным решением проблемы использования AJAX является отказ от AJAX
другие мнения будут??? |
VeshchiyOleg заведите нам для тестирования одну на всех учетную запись, совершенно нет желания оставлять свои данные
|
login: ChatTester
password: 1 вот только если кто под вами зайдет, когда вы в онлайне, то вас... ну не выкинет, но возможность совершать какие-либо действия пропадет... |
итак:
1. сделал вместо локальных объектов внутри каждой функции - два глобальных обновителя для каждого div 2. при обращении к этому объекту делаю ему abort или если объекта нет, все же создаю его результат: + тормозов стало заметно меньше - они не исчезли |
разрешил асинхронность для ie
теперь при попытке флуда (когда чаcто отправляешь сообщения) IE даже не виснет - просто вылетает без объяснения причин вот он (IE) был - я нажимаю в очередной раз Enter и вот его (IE) нет :( видимо ie не хочет корректно делать abort |
Время: 13:32. |
Время: 13:32.
© OSzone.net 2001-