2012-05-06 1 views
7

CakePHP Plugin AssetCompress(v 0.7)はうまく動作しますが、ディレクトリ内のファイルはキャッシュされません。CakePHP 2.1 Asset Compress Pluginがキャッシュされていないファイルを作成していません

[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 

その他の注意事項:これは私のasset_compress.iniセットアップで

  • 私はcore.phpの中に "0" のデバッグを設定し
  • cache_jsフォルダが書き込み可能(777)
  • です
  • また、キャッシュエンジンとしてMemCacheを使用しています(問題が発生する可能性があるかどうかわからない場合)

誰もAsset Compressプラグインで同じ問題を経験しましたか?


更新:これは私がCSS /少ない部分に使用するもので、かなりうまく機能:https://github.com/Hyra/less

+0

は何あなたのレイアウトが似てないコンソール(Linux)またはCMDプロンプト(Windowsの場合)から、通常のAssetCompressを実行できることを想定していますか?また、手動で構築できるかどうかをシェルで試してみましたか? '$ cake asset_compress.asset_compress build' – jeremyharris

+0

悲しいことに、私はシェルへのアクセス権がありません:(あなたのレイアウトはどのようなものなのでしょうか?)AssetCompressは問題を完全に解決します私が適切なパーミッションを与えても、ファイルが作成された後に保存されないことがあります。 –

+0

静的ファイルはシェルを使用してのみ生成されるため、持っていないとどのように達成するのか分かりません私はあなたのローカルPCでシェルを使ってビルドして、app/tmp/asset_compress_build_timeと一緒に生成された静的ファイルをアップロードすると思うでしょうか? – tigrang

答えて

2

私はよくこのGithub's wiki pageを理解していればあなたはmemcacheのを活用するためにcacheConfig = truecacheConfig = falseを変更する必要があります。

+0

Mhh ...面白いです。私はMemCacheを無効にし、cacheConfig設定= falseを維持しましたが、ファイルはcache_jsフォルダに保存されませんでした。その後、私はキャッシュメカニズムとして "FILE"を有効にしましたが、作成された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のwiki](https://github.com/markstory/asset_compress/wiki)をお勧めします。 –

0

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'); 
} 

これは、あなたが

関連する問題