асинхронный браузер

Nov 23, 2018 10:23

если посмотреть диспетчер задач, в нем будет видна куча процессов браузера, по одному на вкладку. Этот подход в свое время был внедрен Хромом чтобы избежать блокировок и подвисаний на разных вкладках (тогда только появились многовкладочные браузеры ( Read more... )

интересно не только программистам, идея

Leave a comment

Comments 20

3seemingmonkeys November 23 2018, 08:50:46 UTC
хром много памяти жрет? а что ее экономить
разве кто по 20 вкладок открывает но мне кажется таких людей не очень много..

Reply

freedom_of_sea November 23 2018, 09:47:37 UTC
ну вот в серверах память экономят, никому не нужно тысяча апачей в памяти

Reply


vitus_wagner November 23 2018, 11:03:21 UTC
Copy on write? Нет, не слышали.

Reply

freedom_of_sea November 23 2018, 11:20:50 UTC
в апаче эти ухищрения не сработали, nginx его делает

Reply

vitus_wagner November 23 2018, 12:10:21 UTC
В апаче эти ухищрения не работают только если туда php встраивать. Если не встраиваивать туда интерпретаторов скриптовых языков, то все хорошо будет.

Reply


vitus_wagner November 23 2018, 11:06:57 UTC
Асинхронный браузер будет синхронно вешаться. Потому что т.н. "асинхронность" это на самом деле старая добрая
"кооперативная многозадачность", крайне популярная в 80-е годы прошлого века, когда процессоры хреново умели переключать контексты.
Кроме того, борьба с cros-site-scripting attacks в асинхронном браузере, у которого разные вкладки выполняются в одном процессе (и даже в одной нити), а значит в общем пространстве памяти, и средствами системы ее никак не поделить, это еще то развлечение.

Решаемо, конечно, например путем написания интерпретатора джаваскрипт на эрланге. Но гемморойно...

Reply

freedom_of_sea November 23 2018, 11:18:49 UTC
а как в nginx в одном процессе в разных асинхронных сессиях люди вводят свои кредитки?

Reply

vitus_wagner November 23 2018, 11:53:28 UTC
У nginx-а есть сисадмин. Который настучит по голове клиентам хостинга, которые начнут воровать друг у друга пользовательские данные.

А у браузера исполняемый им код - заведомо враждебный его пользователю и квалификация у этого пользователя может быть никакой.

Reply

freedom_of_sea November 23 2018, 11:59:17 UTC
не могу поверить что вы программист.
По вашему, единственное что ограждает сессии пользователей в nginx друг от друга - это злобный сисадмин, неустанно проверяющий в дебаггере что они там делают?

Reply


iv_an_ru November 23 2018, 13:19:50 UTC
Я бы ещё напомнил про древний добрый Imatix Xitami --- высокопроизводительный _однонитевый_ веб-сервер, на машине состояний. И на огромную кучу миддлвари, в которой в одном процессе не только веб-дав-сервер, но и веб-клиенты, СУБД, hosted languages и черти лысые.

Reply


avryabov November 23 2018, 13:46:46 UTC

Дык проблема апача в том что когда скрипт уже закончил свою работу, он не может освободить память ибо данные отдаются клиенту по медленному протоколу. А одновременное исполнение кучи разных скриптов на самом сервере на самом деле и не нужно. Достаточно не запускать скрипты пока все данные не получены и прибить их сразу после того как ответ сформирован. Т.е. nginx эффективно решает задачу back-proxy server.
У клиенского браузера задача-то другая: крутить кучу разных javascript'ов уже после того как страничка принята. "Разных" это весьма важно, ибо тут и подход fastcgi не применить.
Не, тут эти решения не сработают.
Замечу что nginx и fastcgi не написаны на rust.
Rust это о другом, и он вполне может дать существенный бонус.

Reply

freedom_of_sea November 23 2018, 14:43:31 UTC
"У клиенского браузера задача-то другая: крутить кучу разных javascript'ов уже после того как страничка принята. "Разных" это весьма важно, ибо тут и подход fastcgi не применить."

Как кручение разных javascript в браузере отличается от кручения разных javascript в node.js ?

"Замечу что nginx и fastcgi не написаны на rust.
Rust это о другом"

не было тогда руста. Сейчас неэффективно писать сложный асинхронный код браузера на С++ , когда есть Rust

Reply

avryabov November 23 2018, 17:02:48 UTC

-Как кручение разных javascript в браузере отличается от кручения разных javascript в node.js ?

На сервере набор скриптов конечен и их можно крутить в одном процессе, не выгружая все данные, не отключаясь от БД, и т.п. Т.е. ровно то что обеспечивает подходу fast-cgi повышенное быстродействие: наследование общих данных от одной итерации скрипта к другой.
За набором скриптов следит программер и он может гарантировать что вредоносных скриптов там нет, и потому передовать среду можно относительно безопасно.

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

Reply

freedom_of_sea November 23 2018, 17:26:44 UTC
возможно что вы правы, жалко коли так

Reply


Leave a comment

Up