Infoweb\menu\module\assetsのcssまたはjsファイルを更新するたびに、backend\web\assetsフォルダーを空にする必要があります
資産キャッシュを自動的にクリアする方法はありますか?
これをビューに追加します。
use vendor\myVendorName\myPackageName\assets\AppAsset;
AppAsset::register($this);
あなたの設定にこれを追加してください:
'components' => [
'assetManager' => [
'linkAssets' => true,
],
]
アセットフォルダーを空にして、更新して完了
追加のプロパティがあります
if (YII_ENV_DEV) {
...;
...;
...;
$config['components']['assetManager']['forceCopy'] = true;
...;
...;
}
以前に公開されていてもファイルを公開する
環境が実稼働環境の場合、 Cache Busting を使用することをお勧めします。
return [
// ...
'components' => [
'assetManager' => [
'appendTimestamp' => true,
],
],
];
アセットの詳細については、 Assets Yii2 documentation を参照してください。
独自のプラグインを開発している場合は、バンドルごとにアセットを強制的に公開できます(注:$ 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,
];
}
AssetManagerは、ファイルの変更時間に基づいてハッシュを作成します。ファイルが変更されても、ディレクトリの変更時間は変わりません。 _$sourcePath
_というディレクトリを持つAssetBundleがある場合、ディレクトリの変更時間が使用され、ハッシュは変更されず、_web/assets
_ディレクトリには何もコピーされません。
サブクラスでAssetManager::hash()
をオーバーライドするか、_AssetManager::$hashCallback
_の関数を記述することをお勧めします。
_'components' => [
'assetManager' => [
'hashCallback' => function($path) {
// if: $path is directory: figure out when files were changed in directory
// else: use original hash function in \yii\web\AssetManager
}
],
]
_
バンドル内のすべてのアセットファイルの最大修正日を見つけるためのサンプル実装については、wookie @ http://php.net/manual/en/function.filemtimeでこのコメントを見ることができます。 .php#35779
アセットファイルを変更すると、_web/assets
_に新しいディレクトリが作成され、定期的なクリーンアップが必要になることに注意してください。ただし、ブラウザのキャッシュは別として、ページを更新すると最新の変更が反映されます。
このような開発環境のmain-local.phpでassetManager::forceCopy=true
を設定します
return [
'components' => [
...
'assetManager' => [
'forceCopy' => true,
]
...
],
];
私が使う - CClientScript::registerScriptFile
私のビューファイルのメソッド:
Yii::app()->clientScript->registerScriptFile(
$this->getAssetsBase() . '/js/script.js'
);
Script.jsを変更した場合、次のページのリロード後にすべての変更が表示されます
Cssファイルの場合- CClientScript::registerCssFile
Yii::app()->clientScript->registerCssFile(
$this->getAssetsBase() . '/css/style.css'
);
更新:yii 2.0ベータ版を使用する場合、クライアントヘルパーのメカニズムの変更に関する情報をここで読むことができます: link
Sudo rm -rf frontend/web/assets/*
Sudo chmod 777 frontend/web/assets
./yii cache/flush-all
これが機能しない場合:
Sudo rm -rf vendor/*
composer install