mootools: я хочу реализовать архитектуру, похожую на Big pipe в Facebook - PullRequest
3 голосов
/ 07 февраля 2011

Я разрабатываю приложение в mootools. Я использовал класс Reqeust для его реализации. Я хочу разработать превосходный метод для обработки запросов клиент-сервер. Я прочитал следующую статью, чтобы понять, как работает большая труба в Facebook.

http://www.facebook.com/notes/facebook-engineering/bigpipe-pipelining-web-pages-for-high-performance/389414033919

В Facebook функция javascript вызывается по прибытии любого ответа сервера на экран обновления данных пользователя. (см. скриншот)

http://img815.imageshack.us/img815/5154/facebookna.jpg

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

Может кто-нибудь дать мне такую ​​базовую модель?

До сих пор я разработал архитектуру, в которой response_data хранится в глобальной переменной, а затем вызывается функция для обновления данных на экране пользователя (используется здесь синхронный запрос), что очень медленно.

Итак, какой метод лучше "синхронный или асинхронный"?

1 Ответ

3 голосов
/ 07 февраля 2011

Во-первых, спасибо за прочитанное, это был очень интересный пост в блоге.

Возможно, вы захотите заглянуть в эту библиотеку , которая была вдохновлена ​​BigPipe Facebook. Примечание: я не одобряю это, поскольку я никогда не использовал это, но строить это самостоятельно нетривиально.

Относительно того, является ли синхронный и асинхронный лучше, это зависит. Синхронный проще - зависимости очевидны, и никаких накладных расходов нет. Асинхронный является преимуществом только в том случае, если ваши ресурсы используются не полностью, и ваша обработка может быть легко разбита на независимые блоки. Я не могу сказать, что вы пытаетесь сделать, поэтому вам нужно самостоятельно решить, где на самом деле находится узкое место в производительности, и будет ли такая архитектура приложения, при которой несколько разделов можно загружать, обрабатывать и визуализировать параллельно, действительно обеспечит преимущество.

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

...