2012-06-20 20 views
9

Estaba experimentando con Django Compressor en desarrollo en un bloque de archivos css. Primero puse etiquetas {% compress%} alrededor de un archivo, generando f6527e81a37c.css. Luego incluí dos archivos css más entre las etiquetas, pero en lugar de un archivo modificado, esto dio como resultado 2 archivos minimizados: f6527e81a37c.css y ee906624f953.css.Compresor Django no regenerado Comprimido CSS

Al final, quería concat y comprimir todo ese bloque de CSS en un archivo minificado, pero mover más archivos en las etiquetas de compresión no parece regenerar las claves asociadas con los archivos CSS, es decir, todavía comprime en múltiples archivos css a pesar de que están envueltos en el mismo bloque {% compress%}.

Intenté borrar la memcache de Django, eliminar el directorio/static/CACHE/que genera el compresor, y usar el comando de administración de compresas que viene con Django Compressor, pero aún obtengo múltiples archivos css comprimidos cuando ejecuto el dev. ambiente. ¿Hay algún tipo de actualización que pueda hacer para que Django Compressor regenere las claves CSS asociadas con los archivos en el bloque {% compress%}? El compresor debe estar almacenando las teclas de archivos comprimidos anteriores en alguna parte.

Los resultados de la compresión:

<link rel="stylesheet" href="/static/CACHE/css/f6527e81a37c.css" type="text/css" media="screen, projection" /> 
<link rel="stylesheet" href="/static/CACHE/css/ee906624f953.css" type="text/css" /> 
<link rel="stylesheet" href="/static/CACHE/css/7147db857125.css" type="text/css" media="screen, projection" /> 
<link rel="stylesheet" href="/static/CACHE/css/043e7d82b775.css" type="text/css" /> 

settings.py:

STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder', 
    'django.contrib.staticfiles.finders.AppDirectoriesFinder', 
    #other 
    'compressor.finders.CompressorFinder', 
) 
COMPRESS_ENABLED = True 
COMPRESS_OFFLINE = True 
COMPRESS_CSS_FILTERS = [ 
    #creates absolute urls from relative ones 
    'compressor.filters.css_default.CssAbsoluteFilter', 
    #css minimizer 
    'compressor.filters.cssmin.CSSMinFilter' 
] 
COMPRESS_JS_FILTERS = [ 
    'compressor.filters.jsmin.JSMinFilter' 
] 

Respuesta

4

He encontrado mi respuesta:

Django Compresor estaba rompiendo los archivos CSS en torno a las que contienen los medios de comunicación "= pantalla, proyección" en sus propiedades y los que no lo hacen.

Gracias por la respuesta.

1

Eso es cómo funciona Django compresor. Cada vez que hay un cambio, se genera y usa un nuevo archivo CSS. El anterior no se elimina.

Simplemente elimine todos sus archivos css en el directorio CACHE y vuelva a cargar su página. Después de eso habrá solo uno.

7

Establecer la misma propiedad media a todas las declaraciones de CSS ayudará.

El resultado es algo así como:

<link rel="stylesheet" href="/static/CACHE/css/f6527e81a37c.css" type="text/css" media="all" /> 
Cuestiones relacionadas