CakePHP 2.1资产压缩插件不创建缓存文件

时间:2012-05-06 10:46:24

标签: cakephp plugins cakephp-2.1

我正在使用 CakePHP Plugin AssetCompress (v 0.7),它可以正常工作,但它不会缓存目录中的任何文件。这是我的 asset_compress.ini 设置:

[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

附加说明:

  • 我在core.php中将调试设置为“0”
  • cache_js文件夹是可写的(777)
  • 我也在使用MemCache作为缓存引擎(不确定这是否会导致问题)

有没有人遇到过Asset Compress插件的相同问题?


更新:这是我用于CSS / Less部分的内容,效果非常好:https://github.com/Hyra/less

3 个答案:

答案 0 :(得分:2)

如果我理解这个Github's wiki page,您应该将cacheConfig = false更改为cacheConfig = true以利用MemCache。

答案 1 :(得分:2)

您必须使用shell脚本生成文件。文件不会自动生成。

https://github.com/markstory/asset_compress/wiki/Shell

答案 2 :(得分:1)

生成并存储asset_compress.ini配置中定义的静态资产,或者动态地通过AssetCompress帮助程序。这样可以避免每次更改css或js文件时手动运行控制台脚本。

这是一些人将其定义为“讨厌的”黑客,我称之为一个有效的解决方案。每次AppController beforeFilter()运行且调试级别大于0时,它只需通过php exec()方法运行控制台脚本。因此,在调试级别为0的生产中,exec()将不会运行

将以下内容添加到/app/Controller/AppController.php beforeFilter()函数中。

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

这假设你可以从控制台(linux)或cmd提示符(windows)运行正常的AssetCompress