2015-01-20 33 views

cevap

18

1) Küresel olarak AssetMananer yardımıyla mümkündür. Bunun için özel bir seçenek $forceCopy var.

Sen bileşeni ile böyle ayarlayabilirsiniz:

use Yii; 

Yii::$app->assetManager->forceCopy = true; 

Veya uygulama config

:

'components' => [ 
    'assetManager' => [ 
     'class' => 'yii\web\AssetManager', 
     'forceCopy' => true,   
    ], 
], 

2) Eğer belirli AssetBundle yılında önbelleğe alma devre dışı kullanmak istiyorsanız $publishOptions özelliği:

public $sourcePath = '...' // In order to use $publishOptions you should specify correct source path. 

public $publishOptions = [ 
    'forceCopy' => true, 
]; 

Alternatif olarak, bu seçeneği bundles özelliğiyle 1 numaralı gibi belirtebilirsiniz.

'components' => [ 
    'assetManager' => [ 
     'class' => 'yii\web\AssetManager', 
     'forceCopy' => true,   
     'bundles' => [ 
      'yii\bootstrap\BootstrapAsset' => [ 
       'forceCopy' => true, 
      ], 
     ], 
    ], 
], 

Ama bu: Örneğin sadece hata ayıklama modunda bu varlık demeti hafızasını kapatır çünkü

'forceCopy' => YII_DEBUG, 

, daha esnektir, ancak üretim sunucusunda izin verir. YII_DEBUG, web/index.php'da ayarlanır.

+0

Garip. Ben 'authManager' ekledim => ['class' => 'yii \ web \ AssetManager', 'forceCopy' => true,], '' bileşenleri '' (konsol.php ve web.php), ama yine de "web/varlıklar" içinde önbellek. – Kupigon

+0

Bu bağlamda devre dışı bırakılması, klasörün de varlıklarda sunulacağı anlamına gelir, ancak her sayfada yüklenen içerik zorla kopyalanır, bu nedenle dosyaların her zaman gerçek sürümlerini içerecektir. Bunu istemiyorsanız, bu yöntemlere bir göz atın. http://www.yiiframework.com/doc-2.0/yii-web-view.html#registerJs%28%29-detail, http://www.yiiframework.com/doc-2.0/yii-web-view. html # registerJsFile% 28,% 29-detay. Resmi belgeler, yerine varlıklarını kullanmanızı önerir. – arogachev

+1

"authManager" yerine "assetManager" olabilir mi? – verybadbug

İlgili konular