2012-04-30 2 views
0

Различные руководства по оптимизации веб-сайтов показывают, что, если возможно, следует объединить несколько javascripts в один, чтобы уменьшить количество HTTP-запросов. С другой стороны, есть немного ортогональное предположение, что использование CDNS, аналогичного Google и Microsoft, будет разделять нагрузку, и браузер сможет загружать параллельно.Объединение javascripts против разделения CDNs

Я немного смущен, так как я должен объединить все javascripts, включая мои собственные, а также сторонние js как один файл javascript или оставить их отдельно (по крайней мере, для тех, которые доступны через свободные CDN)?

Непонятно также, что браузеры загружают несколько файлов javascrit параллельно или они ждут загрузки каждого javascript перед загрузкой других?

У меня есть сайт, который сильно использует javascript, и есть несколько библиотек, которые я использую (jquery, jquery-ui, jquery.json-2.3, jquery.metadata.js, jquery.jcarousel.min.js jquery. validate.js, jquery.blockUI.js).

ответ

1

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

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

(для Минимизация, есть много онлайн-инструментов, доступные, т.е. http://jscompress.com/, который также позволяет генерировать один файл JS из нескольких единиц)

+0

Спасибо за быстрый ответ, но я вижу преимущество CDN только в том случае, если несколько javascripts загружаются параллельно браузером. Если браузер блокирует загрузку каждого javascripts, это может не помочь (предположим, что javascripts не кэшируются изначально). Более того, я вижу, что у различных CDNS есть много версий js-библиотек и аргумент о том, что существует вероятность того, что на каком-то другом сайте, использующем jquery, он уже кэшируется для вас, вероятно, недействителен. Что касается кэширования, если он загружает мой javascript, не будет ли он также кэшироваться для последующих страниц? – Divick

+0

, чтобы ответить на ваш последний вопрос - да, для последующих запросов ваши файлы также будут кэшироваться браузером. Большинство CDN также предлагают возможность всегда ссылаться на последнюю версию (например, в cdn Google, если вы укажете «1» в качестве номера версии). Это помогает против аргумента в том, что могут быть разные версии кеширования - с использованием URL-адреса в последней версии вы увеличиваете вероятность ссылки на кешированную версию. Я бы очень рекомендовал использовать cdns, вы сохранили некоторый трафик, и ваши пользователи могли бы сэкономить некоторые запросы (со временем cdns получают ссылки гораздо чаще). –

+0

и все же о блокировке - некоторые браузеры также поддерживают некоторый подход «угадывания», в котором они предполагают, что сценарий не влияет на dom и, следовательно, может быть загружен параллельно. даже без такого подхода, я все еще думаю, что вам лучше с cdn за лучшую смесь производительности, трафика и стабильности. –

0

Браузеров скачать несколько JS файлов, так как они находятся на другом CDN. Когда они находятся на одном CDN, браузер ждет каждого, чтобы завершить загрузку другого.

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

+0

Итак, вы предлагаете, чтобы браузер не загружал несколько javascripts из того же домен параллельно, если он будет, если javascripts из разных доменов? Это звучит немного странно. Думая больше об этом, я понимаю, что браузеры могут загружать несколько javascripts на странице параллельно (из одного и того же из разных доменов, если браузер не ограничен количеством параллельных запросов в том же домене, который обычно равен 2 или более) , – Divick

Смежные вопросы