Автоматическая минификация на стороне сервера?

есть ли способ автоматически минимизировать статический контент, а затем автоматически обслуживать его из кэша? Подобно работе mod_compress/mod_deflate? Предпочтительно что-то, что я мог бы использовать в сочетании со сжатием (поскольку сжатие имеет более заметное преимущество).

мои предпочтения-это то, что работает с lighttpd, но я ничего не смог найти, поэтому любой веб-сервер, который может это сделать, был бы интересен.

4 ответов


вы можете попробовать сторонний модуль полосы nginx:

http://wiki.nginx.org/NginxHttpStripModule

любой модуль, который вы используете, просто удалит пробелы. Вы получите лучший результат, используя minifier, который понимает все, что вы минимизируете. например, компилятор javascript закрытия Google.

Он достаточно умен, чтобы знать, что такое переменная и сделать это название покороче. Перевозчик пробел не могу.

Я бы рекомендовал minifying offline, если ваш сайт не очень низкий трафик. Но если вы хотите минимизировать в своей живой среде, я рекомендую использовать прокси-кэш nginx. (Извините, но у меня недостаточно репутации, чтобы опубликовать более одной ссылки)

или вы можете посмотреть в memcached для кэша в памяти или Redis для того же, но с резервной копией диска.


Я решил сделать это через PHP (в основном потому, что мне не хотелось писать модуль lighttpd).

мой скрипт принимает строку запроса, указывающую тип запрашиваемых файлов (js или css), а затем имена этих файлов. Например, на моем сайте CSS добавляется следующим образом:

<link rel="stylesheet" href="concat.php?type=css&style&blue" ... />

это уменьшает и объединяет стиль.CSS и синий.в CSS

Он использует JSMin-PHP и cssmin.

Он также кэширует файлы с помощью XCache если он доступен (так как сокращение-это дорого). На самом деле я планирую изменить сценарий, чтобы он не уменьшался, если Xcache недоступен, но у меня есть Xcache, и мне стало скучно.

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


Я использую Майкрософт "Аякс" Английское Сокращение Cups который поставляется с библиотекой C# для минимизации JS-файлов. Я использую это на сервере и обслуживать максимум два сокращен .файлы js на страницу (один "статический", который одинаков на всем сайте, и один "динамический", который специфичен только для этой страницы).

Yahoo Yui компрессор также является простой Java .файл jar, который вы можете использовать.

самое главное, я думаю, не делать это на основе файла за файлом. Вы действительно нужно комбината the .JS-файлы, чтобы получить максимальную пользу. По этой причине "автоматическое" решение на самом деле не будет работать - потому что оно обязательно будет работать только на основе файла за файлом.


Если вы используете nginx и вместо lighttpd, то вы можете воспользоваться nginx в встроенная поддержка Perl использовать модуль Perl JavaScript-Minifier для минимизации и кэширования JS на стороне сервера.

вот подробности о том, как этого достичь:wiki.nginx.org/NginxEmbeddedPerlMinifyJS