34

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 が機能しないことです。

4

11 に答える 11

66

私は非常にエレガントな方法を見つけました:

設定するだけで十分です:

CKEDITOR.timestamp='ABCD';

ckeditor.jsをリンクした直後、またはckeditorがすべてのファイルをロードする前

これは、CKEDITORが動的にロードするすべての.js.cssファイルにタイムスタンプを追加するために使用する変数です。

したがって、これらのファイルを変更するたびに、その変数を更新すると、ブラウザーがそれらを再ロードします。

于 2013-02-18T17:40:38.707 に答える
3

私にとって、設定CKEDITOR.timestamp = +new Dateは非常にうまく機能します。他の CKEditor JS がロードされる前にロードされる JS でそれを書きました (私のカスタム Drupal モジュールを参照してください)。

カスタム プラグインまたはカスタム構成 JS に追加されたクエリは、ブラウザをリロードするたびに更新されます。カスタム CSS でも同様に機能する可能性があると思いますが、テストしていません。

于 2015-04-01T15:24:47.293 に答える
3

これを修正するために私がしたことは次のとおりです。/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>

これを行うと、config.js が 2 回読み込まれます。これは、CKEditor が独自に読み込むためですが、それでも問題なく動作します。これにより、すべてのブラウザーで自動更新を取得するために必要な制御が可能になります。私は .NET 開発者であり、実際に /ckeditor/config.js をバンドラーに入れているため、クエリ文字列のバージョンが自動的に取得されますが、派手なバンドラーを使用していない場合は、上記のことを手動で実行してください?v=something_random です。

于 2016-11-29T12:24:26.463 に答える
0

URLに変数として一意のタイムスタンプをいつでも追加することも、ハードリフレッシュ(CTRL + F5)を実行することもできます。

于 2013-02-18T16:11:33.913 に答える
0

タイムスタンプの解決策がうまくいかなかったので、他の誰かが同じ問題を抱えている場合に備えて、 ?v=date を ckeditor.js を含めている場所に追加し、config.js が参照されている ckeditor.js 内に再度追加しました。

config.js がキャッシュされているため、新しいタイムスタンプが使用されていないようです。少なくとも数回更新するまではそうではありませんが、それは私がユーザーに指示できることではありません。

于 2014-09-16T01:33:37.653 に答える
0

次のコードを 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');

その後timestamp:rString 、ckeditor.js の値を置き換えます。

于 2017-04-20T09:59:14.973 に答える
-3

Firefox の場合:

  1. に行くabout:config
  2. network.http.use-cacheに設定false
于 2016-05-10T09:48:21.487 に答える