Подлипенский Павел

Блог о технологиях и деньгах

Скаженi кабани: Повышение производительности в браузерах

clock февраля 10, 2009 09:01 by author Подлипенский Павел

John Resig, создатель JQuery, совсем недавно провел небольшую презентацию в Гугле. Темой встречи были улучшения производительности в браузерах(в ближайших релизах), некие новшества в Javascirpt движках, новые способы работы с DOM и изумительные эффекты с помощью CSS стилей. Но обо всем по порядку.

Количество процессов на браузер

Одним из интереснейших нововведений в IE8 и Chrome стало то, что теперь вкладки разделены на несколько процессов. Это дает огромное преимущество в производительности, так как теперь различные веб страницы могут загружаться и исполняться параллельно, не отнимая машинных ресурсов друг у друга. В тоже время такие браузеры как FF, Opera и более старые версии IE загружают/исполняют несколько страниц в одном процессе (различные страницы выполняются отдельными потоками).

Позвольте я поясню, каким же образом происходит разделение вкладок на процессы в Internet Explorer 8. Но для начала давайте вспомним модель процессов IE7:

image

Как видите, каждое окно браузера (UI Frame) находиться в отдельном процессе. Хотя, надо сказать, тут есть одно исключение - если вы нажмете CTRL+N, то новый UI фрейм создастся в том же процессе. Закладки, расширения браузера (toolbar extensions), вспомагательные объекты и ActiveX контролы находятся в том же процессе, что и UI фрейм. Проблема такой модели в том, что любая фатальная ошибка (например stack overflow) в одной из закладок приведет к закрытию всех закладок в этом процессе.

Рассмотрим модель процессов в IE8:

image

В новом браузере изменилось лишь месторасположение UI фрейма соответствующих ресурсов. Со стороны пользователя это будет выглядеть вот так:

image

И так как закладки изолированы от UI фрейма, то фатальная ошибка в одной из закладок приведет к закрытию всех закладок в этом процессе, но окно браузера останется открытым. Зачем нам это нужно? А для того, чтобы браузер (UI Frame) имел возможность восстановить закрытые вкладки. Но вернемся к разделению вкладок на процессы. Как вы наверное уже успели заметить закладки разделяются на процессы по принципу принадлежности к одной из моделей безопасности (medium IL или low IL). Это накладывало некоторые ограничения на процесс(окно браузера) и когда вы, например, открыли Интранет страницу в одной вкладке, а затем пытались открыть Интернет страницу в другой, то браузер вам сообщал: "Internet Explorer needs to display this webpage in a new window". Это происходило по той причине, что данный процесс(а следовательно и данное окно браузера) имело определенные security-ограничения в отношении страниц, которые он отображал. Теперь, вы можете открывать страницы с разными уровнями безопасности в одном окне.

Боюсь ввести вас в заблуждение, что и Chrome работает по тому же принципу, что и IE 8 (раз эта фича была объявлена для обоих браузеров в одном предложении ранее). Поэтому вкратце расскажу как это происходит в гугловом браузере.

Chrome создает три типа процессов:

Браузер. Существует только один процесс браузера, который управляет закладками, окнами и "хромированием" внешнего вида. Этот процесс также ответственен за операции с диском, сетью, пользовательским вводом.

Отрисовщик (Renderer). Прости господи меня за такой перевод, но этот тип процессов действительно отвечает за обработку HTML, Javascript, CSS, картинок и много чего еще.  Причем эти процессы не имеют доступа ни к вашему диску, ни к сетевым ресурсам. Все взаимодействия с пользователем, а также отрисовка на дисплее лежит на процессе типа Браузер. Такое разделение на процессы позволяет сразу убивать подозрительные процессы, которые могли быть подвержены различного рода атакам.

Плагины. Процесс браузера также создает по одному процессу для каждого типа плагина: Flash, Quicktime, Adobe Reader и тп.

Все эти процессы можно увидеть в собственном Chrome Task Managar'e:

image

Как только Chrome создал процесс типа Браузер, он начинает создавать по одному процессу типа Отрисовщик для каждого веб-сайта, который вы посещаете. Но тут тоже не все так просто, как кажется на первый взгляд. Ведь создавать такое количество процессов было бы весьма расточительно, учитывая то, что создание процесса это весьма трудоемкая и ресурсоемкая операция. Поэтому, если вы открываете новую закладку используюя JavaScript, или если вы открываете страницу с того же сайта, но в новой закладке, то эти закладки будут находиться в одном процессе (типа Отрисовщик). Это позволяет этим страницам на разных вкладках общаться посредством JavaScript и разделять общие закэшированные объекты. Но даже при таком подходе в группировке вкладок в процессы, существует риск создать слишком много процессов и "повесить" систему. Поэтому разработчики ввели ограничение на количество процессов, это число зависит от ресурсов вашей машины, но в среднем оно не превышает 20.

Процессы типа Плагин создаются сразу как только вы открыли страницу, нуждающуюся в этом плагине. И убивает этот процесс, вскоре после того как вы закрыли последнюю страницу, использующую этот плагин.

Мда...хотел написать обзорный пост о презентации, а получился обзорный пост о распределении закладок по процессам в браузерах... Ладно, не буду превращать этот пост в руководство по написанию эффективных веб приложений. Дам лишь ссылки на видео презентации и ее слайды.

Остальные интересности и вкусности этой презентации я постараюсь осветить в ближайшем светлом будущем.

Полезные ссылки

IE8 and Loosely-Coupled IE (LCIE)

IE8 and Reliability

Группировка вкладок в IE8

Multi-process Chrome Architecture

Текущий рейтинг: 4.7 (3 голосов)

  • Currently 4,666667/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


Remix.ru: Если есть стандарт, ёбте, почему бы ему не следовать?

clock мая 26, 2008 09:59 by author Подлипенский Павел

23 мая 2008 года в Москве прошла конференция веб-разработчиков Remix с участием генерального директора компании Microsoft Стивена Балмера. Организация была в стиле Microsoft – мелкие розыгрыши лицензионных продуктов компании, кофе-брейки, обед, X-Box и пиво в конце мероприятия. Но основную массу, конечно же, привлекли не эти радости жизни, а публика, собравшаяся в тот день.

После вступительной части на сцену вышел Стив Балмер, со своим громким «Developers!» (в этот момент кто-то сзади сказал: «…ну вот, понесло старика»). Во время своего 10-ти минутного обращения к аудитории, Стив сделал акцент на эволюции ПО, на том, что природа программного обеспечения становится не застывшей, а переходит к модели Soft+Service. Потом на сцену вышел Антон Носик и начал интервьюировать Балмера. Первый его вопрос был одним из самых популярных, его я слышал краем уха, еще до начала конференции: «А зачем вы, собсно, приехали?». Стив ответил туманно, мол надо встретиться с заказчиками и что-то там еще… В кулуарах же, одних смущало само присутствие Стива, на столь мелком для него мероприятии, другие недоумевали «А почему именно Носик?».

Стив Балмер и Антон Носик

Далее Стив озвучил надежды Microsoft в отношении пиратства – «Мы надеемся, что не будет пиратства в государственном и образовательном секторе, большом бизнесе, немного - в малом бизнесе. И вообще, должно быть так мало пиратства, насколько это возможно вообще» (смех в зале).

Довольно четким, будто заранее обдуманным, был ответ и на вопрос об отношении Microsoft к open source. В последнее время корпорация действительно стала больше внимания уделять как самой концепции, так и открытым стандартам. Позиция Балмера оказалась очень простой. Исходные коды получат те, кому Microsoft их предоставит, например, государственные службы безопасности. ПО, которое можно бесплатно раздавать, Microsoft старается не делать, так как корпорация существует ради прибыли. Рассказывал он весело, то и дело, поправляя носки, ковыряясь в носу и показывая зрителям язык – старый, добрый Стив.

После выступления Стива зал заметно опустел и на следующий доклад – PHP на Windows, пришли не все. Роман Здевский сразу раскрыл парочку секретов Microsoft'a:

Секрет 1: MS знает, что есть браузеры, кроме IE.

Секрет 2: MS знает, что есть платформы, кроме майкрософтовских.

А затем попытался развеять несколько мифов:

Миф 1: Хостинг на MS дороже. Примером дешевого MS хостинга был партнер компании – MasterHost. Мне в душу закралось сомнение, и я пошел гуглить. Первая попавшаяся мне ссылка показала:

 

Хотя некоторые другие провайдеры дают равные цены для обеих платформ.

Миф 2: Стартовать на платформе MS дорого. Спорить глупо – в нашей стране это действительно миф ;)

Алексей Могилевский, в свое время придумал черточку в Word'e, а на конференции рассказывал об Internet Explorer'e 8. Из доклада можно было понять, что

  • IE8 будет красивым. Например, в строке адреса хост выделяется, а, скажем, длинный урл затеняется.
  • Web slices. Можно подписаться на часто обновляемые фрагменты веб-страницы.
  • Выделение фрагмента текста и просмотр через контекстное меню: месторасположения объекта на карте, правописание, цены на товары, перевод и т.д.
  • Если веб-страница обнаруживает отсутствие подключения к интернет, то предлагает сохранить данные на форме до лучших времен.
  • AJAX-приложения получат возможность сохранять свои состояния, таким образом кнопки Вперед/Назад опять можно будет нажимать.

Во время открытой дискуссии с залом, Алексей, не смог ответить на вопрос о поддержке динамической подгрузки JavaScript в следующей версии браузера. На вопрос «При переходе от IE6 к IE7 пришлось писать CSS-хаки. Не придется, ли снова?», ответил – «Гарантий дать не могу никаких, но вы можете верить в то, что мы чему-то научились на наших ошибках», другими словами – опыт позволяет делать нам новые ошибки более уверенно.

В докладе о Silverlight 2.0 не было, пожалуй, ничего нового. Хотя Михаил Черномордиков показал, насколько производительней Silverlight 2.0 по отношению к другим технологиям. А также пообещал поддержку этой технологи на мобильных устройствах, причем не только Windows Mobile – Nokia тоже объявила о поддержке.

Под конец конференции состоялся круглый стол, на котором Microsoftовцам Петру Диденко и Владимиру Габриэлю вспоминали старые грехи компании:

Антон Носик ругал корявую локализацию, предлагал перевести Microsoft, как Мелкомягкий, вспоминал, как Ворд делил слова «мультиканальный» и «обломилося». Когда речь зашла о стандартах, Носика понесло: «…ну если есть стандарт – закрывать тэги <td><tr><table> - ёбте, почему бы их не закрывать! Вместо этого Microsoft поддерживает этих идиотов, и говорит – мы отобразим все правильно, как бы коряво вы не написали…». В конце Антон подытожил: «Microsoft ориентируется на эмбицилов» и «пользователи ставят .NET, чтобы взломать IPhone».

Алекс Экслер скромно предложил убить разработчиков пунктуации в Ворде.

Дмитрий Завалишин прямо на сцене начал молиться, чтобы Microsoft никогда не перевела техническую документацию на русский язык. Интересным, мне показалось наблюдение Дмитрия о том, как во время презентации PHP на Windows, технологии из ряда LAMP по одной заменялись на аналоги Microsoft: «Мы берем красненькие, вражеские технологии и по одной их съедаем…». Я согласен с Димой и в другом: Microsoft выглядит таким плохим в силу статистики и своей большой популярности. Пожалуй, это один из самых сильных аргументов в защиту компании, прозвучавший за время всего круглого стола. Почему эта мысль не пришла в голову мелкософтовцев?

Александров из lenta.ru вопросом: «Как пропатчить KDE2 под FreeBSD? – почему этот, сука, популярный вопрос не был задан Стиву?» вызвал только негативные эмоции у круглого стола. Вспомнили Ющенко. Баян.

Всё закончилось вопросом о том, можно ли доверять Microsoft, который участники стола быстро разбомбили. Круглый стол закончился.

Полезные ссылки:

Официальный сайт мероприятия

Репортаж с выступления главы Microsoft

Internet Explorer 8: краткая запись доклада

PHP и Microsoft: краткая запись доклада

Silverlight 2: краткая запись доклада

Круглый стол о будущем Microsoft в вебе

Блог разработчиков Internet Explorer

Авторский проект Алексея Экслера

Текущий рейтинг: 5.0 (4 голосов)

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


Search


LinkedIn Profile

Tags

Posts

  • Pingback from 241.akemet.com Cb300 Second Hand Address, Cb3000 Video Price Marine Engines
    241.akemet.com

  • http://tvsh2004.narod.ru/gm03.html
    test

  • конечно это очень дорого, у нас ведь вся страна пользуется только лицензионной windows...
    Славян

  • Алексей: С удовольствием!
    Подлипенский Павел

  • Присоединяйтесь к ЖЖ-коммьюнити http://community.livejournal.com/ua_extjs
    Алексей

  • Поправка насчет генерации самого хтмл-кода для ответа веб метода. Предлагаю сделать проще, не создавая объекта страницы и без тега <form> [WebMethod] public string GetControlHTML(string controlLocation) { HtmlTextWriter tw = new HtmlTextWriter(new StringWriter()); var uc = (UserControl)(new UserControl()).LoadControl(controlLocation); uc.RenderControl(tw); return tw.InnerWriter.ToString(); }
    Anthony

Categories

Calendar

<<  Сентябрь 2010  >>
воповтсрчепясу
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

Archive

© Copyright 2010

Sign in

Ó÷àñòíèê ïëàíåòû Developers.org.ua

Bookmark and Share

Web Developement Blogs - Blog Catalog Blog Directory