2015-04-24 4 views
0

Чтобы уменьшить HTTP-запросы, я использую grunt для объединения всех моих скриптов в 2 файла: scripts-head.js и scripts-body.js.Загрузка файлов JavaScript - условная конкатенация

Есть некоторые скрипты (например, прокладки), которые нужно обслуживать только для устаревших браузеров IE. Так что я должен:

  1. Использовать условный комментарий, например <!--[if lt IE 9]> - но теперь это будет означать больше HTTP-запросов.
  2. Просто добавьте устаревшие сценарии IE вместе с другими конкатенированными файлами - это приведет к лишнему неиспользованному коду для современных браузеров, но будет означать меньше HTTP-запросов.
  3. Другой вариант? (Каким-то образом сделать условно конкатенации?)
+0

Который является большим узким местом? Больше запросов может быть не плохо, если скрипты кэшируются и запрашиваются только с сервера один раз. С другой стороны, если комбинированные сценарии сжимаются перед отправкой, разница в размерах «по проводу» может быть не намного больше. –

+1

Сколько у вас «устаревшего кода»? – RobG

ответ

1
  1. Используйте условный комментарий. Это чище.
0

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

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

В любой стратегии не беспокойтесь об этом дополнительном HTTP-запросе, поскольку после того, как браузер кэширует файл, запроса не будет.

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