2010-05-26 28 views
9

¿Hay alguna forma de minimizar automáticamente el contenido estático y luego servirlo desde un caché automáticamente? ¿Similar a tener el trabajo mod_compress/mod_deflate? Preferiblemente algo que podría usar en combinación con la compresión (ya que la compresión tiene un beneficio más notable).Auto-minify del lado del servidor?

Mi preferencia es algo que funciona con lighttpd pero no he podido encontrar nada, por lo que cualquier servidor web que pueda hacerlo sería interesante.

Respuesta

4

Usted puede intentar tercer módulo de Gaza partido de nginx:

http://wiki.nginx.org/NginxHttpStripModule

Cualquier módulo utiliza sólo va a eliminar el espacio en blanco. Obtendrás un mejor resultado al usar un minificador que comprenda lo que estás minificando. p.ej. El compilador javascript Google's Closure.

Es lo suficientemente inteligente como para saber qué es una variable y hacer que su nombre sea más corto. Un removedor de espacios en blanco no puede hacer eso.

Recomendaría minimizar a menos que su sitio tenga muy poco tráfico. Pero si quiere minimizar en su entorno en vivo, le recomiendo usar el caché proxy de nginx. (Lo siento, pero no tengo suficiente reputación para publicar más de un enlace)

O puede buscar en memcached para un caché en memoria o Redis para lo mismo, pero con copia de seguridad de disco.

+3

"Lo siento, pero no tengo suficiente reputación para publicar más de un enlace" ... ¿qué tal escribirlo en texto plano? –

2

Yo uso Microsoft Ajax Minifier que viene con una biblioteca C# para minificar los archivos js. Lo uso en el servidor y sirvo un máximo de dos archivos .js minificados por página (uno "estático" que es el mismo en todo el sitio, y uno "dinámico" específico para esa página).

El compresor YUI de Yahoo es también un archivo .jar de Java simple que puede usar también.

Lo importante, creo, es no hacerlo en una base de archivo por archivo. Realmente necesita combinar los archivos .js para obtener el mayor beneficio. Por esa razón, una solución "automática" realmente no va a funcionar, porque necesariamente solo funcionará en una base de archivo por archivo.

+0

Lo principal es que preferiría no tener que ejecutar un script manualmente (sí sé perezoso). Ya solo tengo un js y un archivo css por página. –

3

Decidí hacer esto a través de PHP (sobre todo porque no tenía ganas de escribir un módulo lighttpd).

Mi secuencia de comandos toma una cadena de consulta que especifica el tipo de los archivos solicitados (js o css), y luego los nombres de esos archivos. Por ejemplo, en mi sitio se añade el CSS como esto:

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

Este le resta y concatena style.css y blue.css

Utiliza JSMin-PHP y cssmin.

También almacena en caché los archivos usando XCache si está disponible (ya que la minificación es costosa). De hecho, planeo cambiar el script para que no se minimice si Xcache no está disponible, pero tengo Xcache y me aburro.

De todos modos, si alguien más lo quiere, es here. Si usa el mío, necesitará cambiar la función isAllowed() para listar sus archivos (puede que sea seguro hacer que simplemente se devuelva cierto, pero fue fácil simplemente listar los que quiero permitir).

Cuestiones relacionadas