Автоматическая минимизация на стороне сервера? - PullRequest
10 голосов
/ 26 мая 2010

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

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

Ответы [ 4 ]

5 голосов
/ 26 мая 2010

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

http://wiki.nginx.org/NginxHttpStripModule

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

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

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

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

3 голосов
/ 27 мая 2010

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

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

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

Это минимизирует и объединяет style.css и blue.css

Используется JSMin-PHP и cssmin .

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

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

2 голосов
/ 04 сентября 2010

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

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

2 голосов
/ 26 мая 2010

Я использую Microsoft Ajax Minifier , который поставляется с библиотекой C # для минимизации js-файлов. Я использую это на сервере и обслуживаю не более двух минимизированных файлов .js на страницу (один «статический», который одинаков для всего сайта, и один «динамический», характерный только для этой страницы). 1003 *

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

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

...