Пакетирование файлов .js против CDN - PullRequest
45 голосов
/ 16 сентября 2011

Чтобы улучшить производительность наших веб-страниц, мы рекомендуем использовать CDN s для обслуживания .js файлов на наших веб-страницах.Это имеет смысл.

Кроме того, мы рекомендуем объединять наши .js файлы, чтобы уменьшить количество запросов, которые отправляются на сервер при загрузке.

Итак, нам нужносядьте и примите решение, если мы используем CDN или пакет .js файлов.

Каковы плюсы и минусы?Какие из них имеют больше смысла?

Ответы [ 4 ]

13 голосов
/ 16 сентября 2011

Почему вы не можете связать их и поместить их в CDN?Вряд ли это должно быть решение одного или другого?

Если у вас есть для выбора одного или другого, это зависит от того, сколько файлов .js вы включаете.Для небольшого числа файлов я бы предположил , что CDN будет быстрее, тогда как, как и для большего числа файлов, пакет .js файлов будет определенно будь быстрее.Там, где произойдет переключение, вы можете поэкспериментировать.

12 голосов
/ 16 сентября 2011

Мой ответ: оба . Свяжите их и поместите в CDN.

Недостаток этого? Зависит. Как выглядит процесс сборки? Вы можете легко автоматизировать пакетирование и минификацию? Вы используете Yahoo YUI или Google Closure или что-то еще?

Кроме того, если есть много jQuery, зависящих от графического интерфейса, трения могут занять некоторое время из-за постоянно меняющихся элементов / эффектов / css.

Тестирование также важно, потому что из-за возможных приуменьшений.

Итог: 5 файлов javascript безопасно объединены в 1 файл === 4 меньше запросов.

Страница с простым старым Html и одной внешней ссылкой на javascript === 2 запроса к вашему серверу. Тем не менее, страница с простым старым Html и одной внешней ссылкой на javascript в запросе CDN === 1 на ваш сервер.

В настоящее время мы используем инструменты Google Closure. Инспектор Google Closure помогает в следующем:

Closure Compiler изменяет ваш исходный код JavaScript и создает код, который меньше и эффективнее исходного, но труднее для чтения и отладки. Инспектор Closure помогает, предоставляя функцию сопоставления исходного кода, которая идентифицирует строку исходного исходного кода, которая соответствует скомпилированному коду.

1 голос
/ 19 сентября 2011

Есть несколько вещей, о которых вам нужно подумать ...

Сколько JS вам нужно загрузить на ранней стадии загрузки страницы, и сколько вы можете отложить на потом?

Если вы можете отложить загрузку JS (например, поместить ее внизу страницы) или загрузить ее асинхронно, как это делает Google Analytics, тогда вы уменьшите время загрузки JS, блокирующее поток пользовательского интерфейса.

После того, как я выяснил, как можно распределить нагрузку JS, я рассмотрю слияние / минимизацию различных файлов JS - сокращение HTTP-запросов является ключом к повышению производительности.

Тогдапосмотрите на перемещение в CDN и убедитесь, что CDN может обслуживать сжатый контент JS и позволяет вам устанавливать заголовки так, чтобы они «кэшировались вечно» (вам придется создавать версии файлов, если вы кэшируете вечно).CDN помогает уменьшить задержку, но также уменьшает размер, так как не содержит файлов cookie

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

Andy

0 голосов
/ 16 сентября 2011

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

...