2012-05-06 13 views
7

Estoy usando el Plugin CakePHP AssetCompress (v 0.7) que funciona bien, excepto que no almacena en caché ningún archivo en el directorio. Este es mi asset_compress.ini configuración:CakePHP 2.1 Componente de compresión de activos no crea archivos en caché

[General] 
writeCache = true 
cacheConfig = false 
alwaysEnableController = true 
debug = false 

[js] 
timestamp = true 
paths[] = WEBROOT/js/ 
cachePath = WEBROOT/cache_js/ 

[speedtest.min.js] 
files[] = speedtest/speedtest.js 

Notas adicionales:

  • puse de depuración a "0" en core.php
  • la carpeta cache_js se puede escribir (777)
  • también estoy usando MemCache como un motor de almacenamiento en caché (no estoy seguro de si esto podría causar el problema)

¿Alguien ha experimentado el mismo problema con el complemento Asset Compress?


Actualización: Esto es lo que yo uso para el CSS menos parte /, funciona bastante bien: https://github.com/Hyra/less

+0

¿Cómo se ve el diseño como? ¿También has probado el intérprete de comandos para ver si puedes construirlos manualmente? '$ cake asset_compress.asset_compress build' – jeremyharris

+0

Lamentablemente no tengo acceso al shell :(No estoy seguro de lo que quiere decir con" cómo se ve el diseño ". AssetCompress funciona perfectamente bien (combinando y minificando scripts) el único problema que tener es que los archivos no se almacenan después de que se crean (aunque di los permisos apropiados) –

+0

Los archivos estáticos solo se generan con el shell, por lo que no sé cómo lo va a lograr si no tiene acceso. Supongo que construirlos en tu PC local usando el shell y luego subir los archivos estáticos generados junto con app/tmp/asset_compress_build_time puede funcionar. – tigrang

Respuesta

2

Si entiendo bien esta Github's wiki page debe cambiar cacheConfig = false a cacheConfig = true para tomar ventaja de Memcache.

+0

Mhh ... interesante. Desactivé MemCache y mantuve la configuración de cacheConfig = false, pero los archivos no se almacenaron en la carpeta cache_js. Luego activé "ARCHIVO" como un mecanismo de almacenamiento en caché, pero el archivo Javascript creado no se almacena en la carpeta cache_js (también revisé la carpeta de caché, pero todavía no tuve suerte). –

+0

Por casualidad, el archivo de registro contiene información significativa relacionada con su problema ('app/tmp/logs/error.log') –

+0

¿qué filtros está usando? Si su asset_compress.ini se completa aquí, es obvio para mí que no funcionará. En mi comprensión de este complemento, necesita decirle qué filtro (s) usar con sus archivos, como [Uglify.js] (https://github.com/mishoo/UglifyJS) o [YUICompressor] (https: //github.com/yui/yuicompressor). Recomiendo revisar el [wiki de asset_compressor] (https://github.com/markstory/asset_compress/wiki) para configurarlo correctamente. –

0

para generar y almacenar activos estáticos definidos en la configuración asset_compress.ini oa través del ayudante AssetCompress sobre la marcha. Esto es para evitar tener que ejecutar manualmente el script de consola cada vez que cambie sus archivos css o js.

Esto es lo que algunos definirán como un truco "desagradable", lo llamo una solución de trabajo. Simplemente ejecuta la secuencia de comandos de la consola mediante el método php exec() cada vez que se ejecuta AppController beforeFilter() y el nivel de depuración es mayor que 0. Por lo tanto, en la producción donde el nivel de depuración debe ser 0, el exec() no se ejecutará .

Agregue lo siguiente a su función /app/Controller/AppController.php beforeFilter().

if(Configure::read('debug') > 0){ 
    exec(APP.'Console'.DS.'cake -app '.APP.' AssetCompress.asset_compress build -f'); 
} 

Esto es suponiendo que se pueda ejecutar la AssetCompress normal desde la consola (Linux) o cmd (ventanas)

Cuestiones relacionadas