2013-06-13 3 views
2

Я знаю, что выполнение многих запросов для разных сценариев плохо для производительности, то есть для моего скрипта требуется 30 зависимостей, поэтому require.js сделает 31 запрос на это. Я мог бы использовать требуемый оптимизатор и загружать пакеты скриптов.Require.js и SPDY

Что делать, если я использую SPDY и все еще делаю эти запросы 31, возможность мультиплексирования запросов поможет мне и не повлияет на разницу в производительности?

Спасибо

+0

Так вы сделали это в конце? – jiyinyiyong

+0

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

+0

Я пробовал это сегодня. Похоже, что файлы в SPDY немного быстрее, чем в HTTP, когда число больше 100. Для 20 файлов SPDY выглядит медленнее. Я записал здесь несколько заметок (но на китайском), может быть, некоторые из них полезны. http://blog.segmentfault.com/jiyinyiyong/1190000000471129 – jiyinyiyong

ответ

2

При использовании SPDY, возможность мультиплексирования запросов, скорее всего, улучшить производительность.

Причина в том, что при использовании обычного HTTP браузеры обычно могут делать только 6 запросов одновременно (при условии, что все ваши 30 скриптов будут загружены из того же домена). Затем браузеру придется ждать по крайней мере одного сетевого маршрута, прежде чем сможет выполнить 7-й запрос. В зависимости от того, где ваши клиенты относятся к вашему серверу, кругооборот сети может находиться в диапазоне от 50 мс до 500 мс, а иногда даже больше.

С SPDY все 30 запросов могут быть сделаны сразу благодаря мультиплексированию.

Кроме того, сервер SPDY, реализующий SPDY Push, может перенаправить 30 вторичных ресурсов клиенту вместе с первоначальным запросом основного ресурса (обычно, страницы HTML).

Jetty осуществляет SPDY Push, и вы можете посмотреть this demo, чтобы увидеть разницу, которую SPDY Push делает, когда вы запрашиваете более 20 дополнительных ресурсов, связанных с основным ресурсом.

Вы можете найти документацию Jetty SPDY here и blog post, которая показывает, как настроить SPDY Push in Jetty.

+0

Так что было бы нормально сделать 31 запрос на получение всех js-файлов, если я использую SPDY? –

+0

Не могли бы вы привести здесь пример? Здесь я устанавливаю файловый сервер SPDY Nginx, но обнаружил, что он все еще медленный. Я могу догадаться, что, поскольку файлы запрашиваются один за другим с помощью RequireJS, это может быть не так, как обычные HTML-страницы, которые Chrome объединяет все запросы в один. Это возможно? – jiyinyiyong

+0

Браузер, анализирующий HTML-страницу с 30 изображениями в ней, не должен останавливать синтаксический анализ, когда находит первое изображение. Задержка между запросами изображения связана с разбором, а не с сетью. Аналогично, RequireJS может запрашивать файлы * .js параллельно, не дожидаясь загрузки каждого из них. Это случаи, когда SPDY помогает благодаря мультиплексированию, особенно если количество изображений велико (скажем, более 10). Я использую Jetty (я один из его разработчиков), ничего не могу о Nginx. – sbordet