Как объединить запросы для нескольких файлов JavaScript в один запрос HTTP? - PullRequest
7 голосов
/ 19 сентября 2008

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

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

Спасибо!

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

Ответы [ 4 ]

9 голосов
/ 19 сентября 2008

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

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

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

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

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

perl build-project-master.pl core.js class1.js etc.js /path/to/live/js/file.js
5 голосов
/ 19 сентября 2008

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

2 голосов
/ 21 сентября 2008

То, что вы хотите, это Minify . Я только что написал пошаговое руководство для его настройки.

0 голосов
/ 19 января 2013

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

gem install juicer

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...