2012-05-06 52 views
7

我使用的是CakePHP插件AssetCompress(v0.7),它工作正常,只是它不緩存目錄中的任何文件。這是我的asset_compress.ini設置:CakePHP 2.1資源壓縮插件沒有創建緩存文件

[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作爲緩存引擎(不知道這是否會導致問題)

有沒有人遇到過資產壓縮插件的相同問題?


更新:這是我使用的CSS /少部分工作得很好:https://github.com/Hyra/less

+0

什麼是您的佈局看起來運行正常AssetCompress?你是否也嘗試過shell來查看是否可以手動構建它們? '$ cake asset_compress.asset_compress build' – jeremyharris

+0

不幸的是,我沒有訪問shell :(不知道你的意思是「你的佈局是什麼樣子」。AssetCompress完美地工作(合併和縮小腳本)唯一的問題我有的是這些文件在創建後不存儲(即使我給了適當的權限) –

+0

靜態文件只是使用shell生成的,所以我不知道如果你沒有,你將如何完成它我猜想在你的本地PC上使用shell構建它們,然後上傳生成的靜態文件以及app/tmp/asset_compress_build_time可能會起作用 – tigrang

回答

2

如果我沒有理解好這個Github's wiki page你應該改變cacheConfig = falsecacheConfig = true採取內存緩存的優勢。

+0

Mhh ......有趣。我停用MemCache並保持cacheConfig設置= false,但仍然沒有將文件存儲在cache_js文件夾中。然後我激活「文件」作爲緩存機制,但仍創建的Javascript文件不存儲在cache_js文件夾(我也檢查了緩存文件夾,但仍然沒有運氣)。 –

+0

無論如何,日誌文件是否包含與您的問題相關的任何有意義的信息('app/tmp/logs/error.log') –

+0

也是您使用的過濾器?如果您的asset_compress.ini在這裏完成,那麼對我來說顯然不起作用。在我對這個插件的理解中,你需要告訴他你的文件需要使用哪些過濾器,比如[Uglify.js](https://github.com/mishoo/UglifyJS)或[YUICompressor](https: //github.com/yui/yuicompressor)。我會建議通過[asset_compressor's wiki](https://github.com/markstory/asset_compress/wiki)進行配置。 –

0

生成並存儲在asset_compress.ini配置或通過上飛AssetCompress助手定義的靜態資產。這是爲了節省您每次更改css或js文件時都必須手動運行控制檯腳本。

這是一些人將其定義爲「討厭」的黑客行爲,我稱之爲工作解決方案。它每次運行AppController beforeFilter()時都會通過php exec()方法運行控制檯腳本,並且調試級別大於0.因此,在調試級別應爲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)或命令提示符(窗口)