Как автоматизировать объединение и минимизацию Javascript в группах файлов для разных веб-страниц?

Допустим, моя структура страницы:

1. one.html :
   includes ->   a.js, b.js, c.js,d.js

2. two.html :
   includes ->   a.js, b.js,  x.js, y.js, z.js

3. three.html :
   includes ->   a.js, b.js, s.js,  x.js, y.js

и так далее. Некоторые страницы посещаются чаще, чем другие, скажем, 3 страницы составляют 99% всех просмотров страниц веб-сайта.

Я ищу решение для:

i )Объединение и минимизация файлов в группы, которые могут быть включены в страницы.

ii )Имеет некоторую логику для сопоставления имен файлов группы с окончательным комбинированным именем файла.

iii )Включает минификатор, такой как компилятор Google Closure / компрессор YUI.

Одним из решений, которое я рассматривал, является: минимизация PHP

, которая делает большую часть этого. Однако у него есть следующие недостатки для меня:

i )Я буду размещать свои статические комбинированные файлы на сервере CDN, а не на том же веб-сервере, на котором размещается PHP minify, поэтому логика PHP minify для серверных файлов по имени группы не работает для меня.

ii )PHP Minify использует PHP CGI для обработки и обслуживания сценариев, в то время как я хотел бы, чтобы мой минимизированный контент обслуживался непосредственно с сервера CDN.

Есть ли в PHP Minify некоторые функции для сопоставления имени группы с комбинированным именем файла, которые я могу использовать на своей веб-странице, чтобы напрямую задать путь CDN для комбинированного файла JS. например

 array('a.js','b.js','c.js','d.js');
?>


Вместо вызова PHP-скрипта PHP Minify для получения файлов группы, которая на самом деле вызов страницы PHP, который затем обслуживает содержимое javascript из ранее сгенерированные файлы:


(Я согласен, что в большинстве случаев это можно сделать, комбинируя различные решения с пользовательскими сценариями развертывания и инструментами минимизации, например, ANT, FABRIC + YUICompressor/ClosureCompiler,но я ищу хорошо разработанное настраиваемое решение, которое я мог пропустить)

9
задан DhruvPathak 3 May 2012 в 10:20
поделиться