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

StackOverflow https://stackoverflow.com/questions/101893

  •  01-07-2019
  •  | 
  •  

Вопрос

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

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

Спасибо!

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

Это было полезно?

Решение

Есть разные способы, два наиболее очевидных:

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

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

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

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

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

Другие советы

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

То, что вы хотите, это Минимизировать.Я только что написал прохождение для его настройки.

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

gem install juicer

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top