CKEDITORを使用するcmsアプリケーションを作成し、CKEDITORにいくつかの機能を追加するときに、CKEDITOR .js /.cssファイルを更新する必要があります。
しかし、CKEDITORはブラウザにそれらを強制的にキャッシュさせます。
すべての.js/.cssファイルにクエリ文字列を使用していることがわかります
このクエリ文字列は、私が想定しているCKEDITORのバージョンを反映しています。
/Js/ckeditor/config.js?t=CAPD
/Js/ckeditor/lang/it.js?t=CAPD
/Js/ckeditor/plugins/onchange/plugin.js?t=CAPD
CKEDITORでそれを行うための埋め込みメソッドはありますか?
ドキュメントに何も見つかりませんでした。 CKEDITOR 4を使用しています
主な問題は、一部の変更をアップロードすると、クライアントによって更新されず、新しい機能が利用できないか、最悪の場合、CKEDITORが機能しないことです。
私はかなりエレガントな方法を見つけました:
設定するだけで十分です:
CKEDITOR.timestamp='ABCD';
ckeditor.jsをリンクした直後またはckeditorがすべてのファイルをロードする前
これは、CKEDITORが動的にロードするすべての.js .cssファイルにタイムスタンプを追加するために使用する変数です。
したがって、これらのファイルを変更するたびに、その変数を更新し、ブラウザーはそれらを再ロードします。
これを修正するために私がしたことは次のとおりです。 /ckeditor/config.jsに次の行を追加します。
CKEDITOR.timestamp = 'something_random';
プラグインを更新するたびに「something_random」を更新します。
それを使用するページで、次のようにリソースを確認してロードします。
<script type="text/javascript" src="/ckeditor/ckeditor.js"></script>
<script src="/ckeditor/config.js?v=something_random"></script>
これを行うと、CKEditorが独自にconfig.jsをロードするため、config.jsは2回ロードされますが、引き続き正常に機能し、すべてのブラウザーで自動更新を取得するために必要なコントロールが提供されます。私は.NET開発者で、実際には/ckeditor/config.jsを私のバンドラーに入れているので、クエリ文字列のバージョンが自動的に取得されますが、高級なバンドラーを使用していない場合は、上記で手動で言ったことを実行してください?v = something_random。
まだ誰もがこれにイライラしている場合に備えて、私ははるかに簡単な方法を見つけました。
タイムスタンプが付加された構成ファイルのURL(例:?t = XYZD)をブラウザーで開いた場合は、ハードリフレッシュしてからアプリケーションページに戻り、それをリフレッシュすると、構成ファイルの新しいバージョンが表示されます。
ページのソースでckeditorによって設定されたものと同じタイムスタンプを使用する必要があります。開発者ツールまたはFirebugを使用している場合、コンソールにCKEDITOR.timestampと入力すると、使用する値が得られます。
私にとってはCKEDITOR.timestamp = +new Date
は非常にうまく機能します。他のCKEditor JSがロードされる前にロードされるJSでそれを書きました( 私のカスタムを参照Drupal module ))。
これで、ブラウザーをリロードするたびに、カスタムプラグインまたはカスタム構成JSに追加されるクエリが更新されます。カスタムCSSでも同様に機能すると思いますが、テストしていません。
タイムスタンプソリューションが機能しなかったため、他の誰かが同じ問題を抱えている場合は、ckeditor.jsを含めている場所に?v = dateを追加し、config.jsが参照されているckeditor.js内に再度追加しました。
Config.jsがキャッシュされているため、新しいタイムスタンプが使用されていないようです。少なくとも数回の更新が完了するまではそうではありませんが、これはユーザーに指示できることではありません。
次のコードをckeditor.jsに追加します
/*Lets Create a random number*/
function randomString(length, chars) {
var result = '';
for (var i = length; i > 0; --i) result += chars[Math.floor(Math.random() * chars.length)];
return result;
}
var rString = randomString(4, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ');
その後、ckeditor.jsの値timestamp:rString
を置き換えます。
機能するメソッドは、新しいサブカタログに設定およびcssファイルを改善したCKEDITORを配置します。
src = "/ ckeditor_new_one/ckeditor.js"
このトリックは、FirefoxでCKEditorだけでなく、ローカルキャッシュを切り替えたいページでも機能します。
非常に短いチェックの結果、Chrome IEでも同様の設定が見つかりませんでした。
HTH
常に一意のタイムスタンプをURLの変数として追加するか、ハードリフレッシュを行う(CTRL + F5)