Подтвердить что ты не робот

Уменьшить HTTP-запросы или нет?

Теоретический вопрос:
Мы все знаем о том, как профилировать и комбинировать файлы javascript, чтобы уменьшить HTTP-запросы, чтобы ускорить работу сайта. Но когда используются популярные библиотеки javascript (например, jQuery), не слишком глупо предположить, что они уже были загружены на клиентский компьютер с другой страницы.

Итак, что должно быть предпочтительнее? Как справляются с этим крупные ребята в отрасли?

A) Объедините и уменьшите каждый script в массивный и подайте его с моего собственного CDN.

B) Объедините все "самописные" сценарии в один файл и используйте доступные библиотеки CDN, где это возможно.

Спасибо!

4b9b3361

Ответ 1

  • "Объединяйте и уменьшайте каждый script в массивный и обслуживайте его из моего собственного CDN"

    Если у вас есть CDN, о чем мы говорим?:) Вы имеете в виду сервер, правда?

  • "Как ребята из отрасли справляются с этим?"

    Большие парни всегда используют свои собственные серверы.

  • "... не слишком глупо предположить, что они уже были загружены на клиентский компьютер с другой страницы."

    К сожалению, это так. Факты:

    • 40-60% пользователей имеют пустой опыт кеша
    • браузеры ограничения кэша невелики
    • используются разные версии библиотек, кеширование происходит только в том случае, если они соответствуют
    • ресурс из нового домена создает DNS-поиск, который медленный
    • + вам нужно управлять зависимостями

Ответ 2

Я думаю, это зависит от вашего сайта:

  • Если ваш сайт состоит в основном из страниц того же типа, которые нуждаются в тех же сценариях, я бы пошел на A)
  • Если у вас много скриптов, которые отличаются от каждого сайта вашего сайта, я бы выбрал B). Объедините наиболее используемые скрипты вместе в одном script. Если у вас большие сценарии, которые не используются на каждой странице, сделайте для него отдельный script.

Лучший способ узнать, что делать, это проверить, какая комбинация методов экономит вам самый трафик/соединения.

P.S.: Мне лично не нравится идея позволить другим людям обслуживать файлы для моей веб-страницы, потому что, что произойдет, если CDN не удастся, но ваш сервер останется в живых? Если это не проблема для вас, попробуйте сервер всех библиотек, которые вы используете из надежного CDN.

Ответ 3

Я думаю, что лучший подход - использовать мини файл 'application.js' (содержащий все javascript приложения), а затем использовать такую ​​службу, как API AJAX библиотек Google (найдено здесь) для загрузки jQuery, Prototype и т.д.

Ответ 4

Я думаю, что это сводится к нескольким вещам:

  • Сколько страниц использует код на вашем сайте.
  • Качество CDN
  • Сколько кода это

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

Повышение производительности может происходить из двух мест: 1) кеш браузера и 2) кеш-сервер DNS, который, даже если файл не хранится локально, DNS-сервер имеет маршрут, который минимизирует время запроса или даже временно обслуживает файл.

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

Также напоминайте, что некоторые пользователи предпочитают отключать кеш браузера. Так что минимизация вашего JS всегда является плюсом. Вы должны разделить JS на два файла: 1) Требуется при загрузке и 2) Не требуется при загрузке. В принципе, сначала получите необходимый код, чтобы улучшить воспринимаемое время загрузки. Затем загрузите все другие дополнительные функции (например, слайд-шоу, смены цвета и т.д.).

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


Чтобы ответить на ваш вопрос: Уменьшите HTTP-запросы, но сделайте собственную оценку размера файла JS.

(Быть экстремальным) Вам не нужен один 10-мегабайтный JS файл, или ваш сайт займет слишком много времени для загрузки. Также вы не хотите 1000 файлов размером 10 КБ, из-за накладных расходов HTTP. Опять же, используйте это, чтобы проиллюстрировать точку, в которой вы хотите получить баланс между размером и количеством файлов, - и, как я сказал ранее, упакуйте их в нужную производительность и хотите.

Ответ 5

Omar al Zabir запускает сайт под названием pageflakes и содержит множество статей о том, как повысить производительность. В частности, один из них объясняет, как сжимать и комбинировать все виды на стороне сервера перед отправкой клиенту.

Вы также можете использовать спрайты css для уменьшения HTTP-запросов. Они помогают LOT для часто используемых изображений.

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

Ответ 6

В частности, ваш вопрос о том, как большие парни отрасли обрабатывают сценарии на стороне клиента, вы всегда можете посмотреть и посмотреть. stackoverflow.com, кажется, полагается на версию jQuery lib от Google. Другие наиболее решительно не делают....

Ответ 7

Нет особых причин, по которым получение script будет быстрее, чем его разделение. Это происходит потому, что одновременная загрузка браузера ограничена, но не одним.

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

При прочих равных условиях вариант B выглядит как лучший.