强制CKEDITOR刷新配置

时间:2013-02-18 16:07:37

标签: javascript ckeditor browser-cache

我创建了一个使用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不起作用。

11 个答案:

答案 0 :(得分:52)

我找到了一种非常优雅的方式:

设置:

就足够了
CKEDITOR.timestamp='ABCD';

链接ckeditor.js之后,或者在ckeditor加载所有文件之前

这是CKEDITOR用于向其动态加载的所有.js .css文件添加时间戳的变量。

所以每次我更改这些文件时,我都会更新该变量,浏览器会重新加载它们。

答案 1 :(得分:2)

我在这里做了什么来解决它。在/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将被加载两次,因为CKEditor会将其加载到它自己,但它仍然可以正常工作,这应该为您提供在所有浏览器上自动刷新所需的控件。我是.NET开发人员,实际上把/ckeditor.config放在我的捆绑器中,所以它会自动获取查询字符串上的版本,但是如果你没有使用花哨的捆绑器,那就按我上面所说的做手动使用?v = something_random。

答案 2 :(得分:1)

对我来说,设置CKEDITOR.timestamp = +new Date非常好。我在一个JS中编写了它,它将在加载任何其他CKEditor JS之前加载(see my custom Drupal module)。

现在,每次重新加载浏览器时,附加到自定义插件或自定义配置JS的查询都会刷新。我想这可能也适用于自定义CSS,但我没有测试过。

答案 3 :(得分:1)

我找到了一种更简单的方法,万一有人仍然对此感到沮丧。

如果您在浏览器中打开附加时间戳的配置文件URL(例如?t = XYZD),进行硬刷,然后返回到您的应用程序页面并刷新它,您应该获得新版本的配置文件。

您需要使用与页面源中的ckeditor相同的时间戳。如果您使用开发人员工具或Firebug,在控制台中输入CKEDITOR.timestamp将为您提供值。

答案 4 :(得分:0)

您可以随时在网址中添加唯一时间戳作为变量,或者只是进行硬刷新(CTRL + F5)

答案 5 :(得分:0)

时间戳解决方案对我没有用,所以如果其他人有同样的问题,我附加了?v = date到我包括ckeditor.js的地方,然后又在ckeditor.js里面config.js被引用。

似乎自从缓存config.js以来,新时间戳不会被使用。至少在几次刷新之后,但这不是我可以告诉用户做的事情。

答案 6 :(得分: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');

之后用ckeditor.js中的值timestamp:rString替换。

答案 7 :(得分:0)

此技巧在Firefox中不仅适用于CKEditor,而且适用于要切换本地缓存的任何页面。

  1. 打开Firefox调试控制台(F12)。
  2. 打开控制台设置(F1)。
  3. 启用“禁用HTTP缓存(打开工具箱时)”。
  4. 保持控制台打开:)

经过简短的检查,我在Chrome和IE中都找不到类似的设置。

HTH

答案 8 :(得分:0)

将具有改进的配置和css文件的CKEDITOR放到新的子目录中的方法是

src =“ / ckeditor_new_one / ckeditor.js”

答案 9 :(得分:0)

由于这个帖子很受欢迎,让我分享一下我的经验-

我试过@giammin 的回答,但没有用。我最终将 config.js 的权限更改为 664,然后它就像一个魅力。

答案 10 :(得分:-3)

在Firefox上:

  1. 转到IEnumerable<T>
  2. about:config设为network.http.use-cache