Yii2资产清除缓存

Rub*_*ben 28 php assets yii2

每次我在infoweb\menu\module\assets中更新我的css或js文件时,我都要清空后端\ web\assets文件夹
有没有办法自动清除资产缓存?

Rub*_*ben 15

在您的视图中添加此内容:

use vendor\myVendorName\myPackageName\assets\AppAsset;
AppAsset::register($this);
Run Code Online (Sandbox Code Playgroud)

在您的配置中添加:

'components' => [
    'assetManager' => [
        'linkAssets' => true,
    ], 
]  
Run Code Online (Sandbox Code Playgroud)

清空资产文件夹,并刷新,完成


Den*_*dov 15

还有其他财产

if (YII_ENV_DEV) {
       ...;
       ...;
       ...;
       $config['components']['assetManager']['forceCopy'] = true;
       ...;
       ...;
 }
Run Code Online (Sandbox Code Playgroud)

即使之前发布过,也要发布文件

  • 这是正确的@robsch,这就是为什么JustSamter的回答建议只为开发环境启用forceCopy. (3认同)

Bra*_*Guy 10

如果您的环境是生产我建议使用缓存清除:

return [
 // ...
    'components' => [
        'assetManager' => [
            'appendTimestamp' => true,
        ],
    ],
];
Run Code Online (Sandbox Code Playgroud)

有关资产的更多信息,请阅读Assets Yii2文档.


gri*_*son 8

如果您正在开发自己的插件,则可以强制每个捆绑包发布资产(注意:应该设置$ sourcePath)

<?php
   namespace app\components\forms\redactorAssets;

   use yii\web\AssetBundle;

   class RedactorCutAsset extends AssetBundle {
      public $sourcePath = '@app/components/forms/redactorAssets/assets';
      public $js = [
        'cut.js',
      ];
      public $publishOptions = [
        'forceCopy'=>true,
      ];
   }
Run Code Online (Sandbox Code Playgroud)