Как объединить запросы для нескольких файлов javascript в один http-запрос?

эта концепция для меня новая - я впервые столкнулся с ней в конфигуратор зависимостей YUI. В принципе, вместо того, чтобы иметь несколько запросов для многих файлов, файлы скованы в один http-запрос, чтобы сократить время загрузки страницы.

кто-нибудь знает, как реализовать это на стеке лампы? (Я видел, что подобный вопрос уже был задан, но это кажется, ASP специфичен.

спасибо!

Update: оба ответа полезный...(моя репутация еще недостаточно высока, чтобы комментировать, поэтому я добавляю некоторые прощальные мысли здесь). Я тоже пришел!--11-->через другой пост в блоге с конкретными примерами PHP, которые могут быть полезны. Однако ответ Дэвида на построение заставляет меня рассмотреть другой подход. Спасибо, Дэвид!

4 ответов


существуют различные способы, два наиболее очевидных:

  1. создайте такой инструмент, как YUI, который создает уникальную версию на основе компонентов, которые вы отметили по мере необходимости, чтобы вы все еще могли обслуживать файл как статический. MooTools и jQuery UI предоставляют такие пакетные конструкторы, когда вы загружаете их пакет,чтобы дать вам самую оптимизированную и эффективную библиотеку. Я уверен, что универсальный универсальный инструмент существует.
  2. создать простой Perl/PHP/Python / Ruby скрипт, который обслуживает кучу файлов JavaScript на основе запроса. Так что "onerequest.Яш?load=ui&load=effects " перейдет к скрипту PHP, который загружает файлы и обслуживает их с правильным типом контента. Есть много примеров этого, но лично я не фанат.

Я предпочитаю не обслуживать статические файлы через какой-либо скрипт, но мне также нравится разрабатывать свой код с 10 или около того отдельными файлами небольших классов без стоимости 10 HTTP-запросов. Так Что Я ... придумал пользовательский процесс сборки, который объединяет все наиболее распространенные классы и функции, а затем минимизирует их в один файл, например project.минута.js и имеют условие во всех моих представлениях / шаблонах, которое включает этот файл в производство.

Edit - "пользовательский процесс сборки" на самом деле является чрезвычайно простым скриптом perl. Он читает в каждом из файлов, которые я передал в качестве аргументов, и записывает их в новый файл, необязательно передавая все это через помощью jsmin (доступно на всех ваших любимых языках) автоматически.

по команде, как это выглядит:

perl build-project-master.pl core.js class1.js etc.js /path/to/live/js/file.js

есть хороший пост в блоге на этом@ http://www.hunlock.com/blogs/Supercharged_Javascript.


Что вы хотите Minify. Я только что написал прохождение для настройки.


Capistrano-довольно популярный инструмент веб-развертывания на основе Ruby. Если вы рассматриваете его или уже используете, есть отличный камень, который выяснит зависимости CSS и Javascript, объединит и уменьшит файлы.

gem install juicer

С соковыжималка GitHub страница, он может выяснить, какие файлы зависят друг от друга и объединить их вместе, уменьшая количество HTTP-запросов на страницу, тем самым улучшая производительность.