ac@eserv.ru
Блог
Фото
Общие папки
Проекты и группы
Контакты
Визитка
План
Программы
Настройки
ТемаОтДатаРазм
SOPA & PIPAsupport18.01.2012 17:191 Кб
Сам себе устроил DDoSsupport24.12.2011 00:181 Кб
Google использует IPv6 и на основных службахsupport01.12.2011 05:291 Кб
Aboutsupport30.11.2011 05:150 Кб
ТНК приравнены к государствамsupport30.11.2011 04:322 Кб
Яндекс уходитac03.10.2011 21:091 Кб
Eserv на Windows 8ac16.09.2011 16:481 Кб
Облачноеsupport13.07.2011 20:331 Кб
Android proxy - обещанного три года ждутsupport17.06.2011 18:090 Кб
Правильный протоколsupport27.05.2011 17:281 Кб
Гагарин. Made in USSR.ac12.04.2011 04:181 Кб
В домене .RU уже 3 млрд именsupport09.04.2011 07:161 Кб
Некрасов о Яндексеsupport21.02.2011 23:550 Кб
Назад к железуsupport16.02.2011 22:562 Кб
Android не smartsupport15.11.2010 01:461 Кб
Юбилей папки spamsupport13.11.2010 00:241 Кб
ВКонтакте внедряет Байесаac26.08.2010 19:231 Кб
Из жизни вирусовac07.07.2010 18:382 Кб
Imminet Protect переименовали в ClamAV for Windowsac09.05.2010 00:091 Кб
1 июля SQLite станет еще быстрееac08.05.2010 08:162 Кб
Thunderbird 3.1 beta2 улучшает поддержку Eservac06.05.2010 03:441 Кб
Eserv DNS-сервер принял первые доменыac07.04.2010 06:131 Кб
Berkeley DB 5 как убийца SQLite 3 ?ac03.04.2010 20:312 Кб
WinSock от меня усталsupport30.03.2010 21:300 Кб
acFilter или искусственный интеллект в кубеac26.03.2010 23:411 Кб
Как поломать Thunderbirdac26.03.2010 22:221 Кб
А по-немецки с лошадьмиsupport23.03.2010 01:061 Кб
Opera и русские X.509-сертификатыac26.02.2010 06:381 Кб
Загадка FileZilla 3.3.1ac04.02.2010 22:141 Кб
Firefox 3.5.6 поломал NTLMac01.02.2010 07:251 Кб
Обучение или дрессировкаac11.01.2010 17:210 Кб
Вышел Thunderbird 3.0ac11.12.2009 21:041 Кб
Нейробиология и обучение байесовsupport06.12.2009 07:130 Кб
Телефон против интернетаac04.12.2009 01:011 Кб
Голова профессора Доуэляac14.11.2009 23:011 Кб
IE8 самый быстрыйac13.11.2009 08:494 Кб
О доверии серверуac02.11.2009 18:131 Кб
IE8 и deflate content-encodingac12.10.2009 09:503 Кб
Культурный слойAndrey Cherezov26.09.2009 04:282 Кб
Как самостоятельно скомпилировать EservAndrey Cherezov21.08.2009 12:332 Кб
PHP и ISAPIAndrey Cherezov21.08.2009 01:321 Кб
Microsoft прячет VPNы от провайдеровAndrey Cherezov10.08.2009 19:222 Кб
Очень быстрая сеть или машина времениAndrey Cherezov06.08.2009 04:411 Кб
Главная статья про NATAndrey Cherezov24.07.2009 21:191 Кб
Тест на зрелость платформыAndrey Cherezov10.07.2009 21:031 Кб
Производительность CGI, FastCGI и ISAPI в acWEBAndrey Cherezov31.05.2009 10:363 Кб
FlashPlayer и deflate encodingAndrey Cherezov23.05.2009 08:091 Кб
Git over WebDav в EservAndrey Cherezov06.05.2009 19:592 Кб
Исправление Lightning для поддержки русских имен календарейAndrey Cherezov05.05.2009 21:541 Кб
Реклама отсутствующего Exchange ServerAndrey Cherezov05.05.2009 20:021 Кб
Архивация в Thunderbird3AndreyCherezov@24.04.2009 23:441 Кб
RU-CENTER - почта не работает три дняAndrey Cherezov23.04.2009 18:331 Кб
RU-CENTER заспамили насмертьAndrey Cherezov22.04.2009 14:592 Кб
Самопубликация для всех пользователей всех доменовAndrey Cherezov20.04.2009 07:551 Кб

IE8 самый быстрый

Браузеры Firefox и Chrome любят пощеголять скоростью своих новых JavaScript-движков и общей скоростью браузеров, кидая камни в огород Microsoft. Да, с поддержкой веб-стандартов IE плетётся в хвосте (потому что в новых браузерах поддерживать новые стандарты проще, чем в старых ), но вот по части скорости JavaScript и DOM — вопрос спорный. Всё зависит от тестов...

Eserv/4 в этом году является поставщиком стресс-тестов для браузеров Одной из самых напряженных задач, которые E4 ставит перед браузерами — это визуализация процесса импорта учетных записей пользователей из Eserv/3 и прочих старых программ в E4. Сам процесс импорта (в процессе инсталляции E4, например) достаточно быстрый, и никак с браузером не связан. Но этот способ "скучный", и не дает пользователю подробного отчета о том, что и как импортируется, что невозможно импортировать, что является дубликатом существующих учетных записей, и т.д. Кроме того такой "пакетный" импорт предполагает, что входные данные в известных форматах, т.е. позволяет импортировать не из любой программы. Поэтому в E4 сделан и второй способ импорта — пользователь (администратор) закачивает CSV-файл произвольного формата, эта таблица показывается ему в браузере, пользователь указывает соответствие полей, выбирает проект/группу, в который добавляются импортируемые учетные записи и запускает импорт. Для визуализации процесса и возможности отмены процесса, если видно, что что-то идёт не так, исходные данные из таблицы передаются на сервер не одним пакетом, а путем AJAX-запросов, по ответам на которые меняется вид таблицы в браузере.

ie8 acc import m

Так вот такая простая задача стала для браузеров непростым тестом. Сначала я решил задачу в лоб: на каждую строку таблицы запускался ajax-запрос. Запросы выполнялись асинхронно, т.е. могли одновременно выполняться несколько (для веб-сервера acWEB из E4 это, естественно, не проблема, а привычный режим работы), но JS-скрипт в браузере это учитывал, и всё правильно работало. До тех пор, пока я не стал тестировать на списках с десятками тысяч пользователей (пользователи форума, подписчики списков рассылки, списки сертификатов Eserv/3, и т.д.). Часть запросов от браузера серверу стали теряться, т.е. часть ajax-запросов просто не выполнялись — как будто случайно пропускались, и эти записи таблицы, соответственно, не импортировались. Испытывал все существующие браузеры, и только Firefox проводил импорт без пропусков. IE и Chrome пропускали заметную часть, а Opera вообще бОльшую часть таблицы. Разборки показали, что в этих браузерах есть буфер-очередь исходящих ajax-запросов, и если этот буфер в текущий момент весь заполнен, то очередной "претендент" просто туда не попадает — никогда не выполняется. Самый большой из буферов — порядка 500 запросов. При этом узнать момент переполнения невозможно, т.к. никакие ошибки не возвращаются. Браузеры также сильно отличаются в стратегии выполнения запросов из своей очереди. Например, Опера выполняет их последовательно — одним потоком, открывая отдельный коннект для каждого запроса. Другие используют более оптимальные стратегии по коннектам и потокам (подробностей уже, к сожалению, не помню — несколько месяцев прошло). Наличие такого ограничения в браузерах заставило применить другую стратегию — отправлять запросы не "толпой", а последовательно, т.е. превратить AJAX в простой "JAX": после отправки одного запроса следующий запускается только по факту возврата результатов предыдущего. Это несколько замедляет процесс, но не сильно, т.к. основные затраты времени идут на JavaScript+DOM (DHTML) операции по работе с таблицей в браузере — процессор (один из процессоров) загружается этой примитивной работой практически на 100%. При таком способе работы все браузеры справляются с импортом без пропусков.

Так вот, возвращаясь собственно к теме статьи: IE8 на таких задачах раза в три быстрее остальных браузеров. Т.е. на импорт например 3000 пользователей у IE8 уходит около 20 минут (на стороне acWEB — 40 секунд , а у Хрома и FF — час. А самый медленный — Opera10. Самый прожорливый по памяти — Firefox3 (раз в пять прожорливее чем IE8). При этом все без исключения браузеры позиционируют себя как "самые быстрые"
 
Комментарии к этой версии (13.11.2009 08:49) [~ac] b7af127c