Force CKEDITOR обновить конфигурацию

Я создал приложение cms, которое использует CKEDITOR, и когда я добавляю некоторые функции в CKEDITOR, мне нужно обновить некоторый файл Cjeditor.js/.css.

Но CKEDITOR заставляет браузер кэшировать их.

Я вижу, что он использует querystring для всех .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 не работает.

Ответы

Ответ 1

Я нашел довольно элегантный способ:

Достаточно установить:

CKEDITOR.timestamp='ABCD';

сразу после ссылки ckeditor.js или так или иначе, прежде чем ckeditor загрузит все свои файлы

это переменная, используемая CKEDITOR для добавления timestamp для всех файлов .js.css, которые она загружает динамически.

Поэтому каждый раз, когда я меняю эти файлы, я обновляю эту переменную, и браузеры перезагружают их.

Ответ 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.js в свой пакет, поэтому он автоматически запускает версию в querystring, но если вы не используете причудливый связующий, просто сделайте то, что я сказал выше, вручную,? v = something_random.

Ответ 3

Для меня настройка CKEDITOR.timestamp = +new Date работает отлично. Я написал его в JS, который будет загружен до загрузки любого другого CKEditor JS (см. Мой пользовательский модуль Drupal).

Теперь запрос, добавленный к настраиваемому плагину или настраиваемому конфигу JS, обновляется каждый раз при перезагрузке моего браузера. Я думаю, это может работать и с пользовательским CSS, но я не тестировал это.

Ответ 4

Я нашел гораздо более простой метод, если кто-то все еще разочарован этим.

Если вы откроете URL-адрес конфигурационного файла с добавленной меткой времени (например,? t = XYZD) в своем браузере, заново обновите ее, а затем вернитесь на страницу приложения и обновите ее, вы должны получить новую версию конфигурации файл.

Вам нужно использовать ту же метку времени, которая установлена ​​ckeditor в источнике страницы. Если вы используете инструменты разработчика или Firebug, введите CKEDITOR.timestamp в консоль, чтобы использовать значение.

Ответ 5

Вы всегда можете добавить уникальную временную метку в качестве переменной в своем URL-адресе или просто выполнить жесткое обновление (CTRL + F5)

Ответ 6

Решение timestamp не работает для меня, поэтому, если у кого-то еще есть такая же проблема, я добавил: v = дата, где я включаю ckeditor.js, а затем снова внутри ckeditor.js, где config.js ссылки.

Кажется, что, поскольку config.js кэшируется, новая метка времени не используется. По крайней мере, только после нескольких обновлений, но это не то, что я могу сказать своим пользователям.

Ответ 7

Добавьте следующий код в 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.

Ответ 8

Этот прием работает в Firefox не только для CKEditor, но и для любой страницы, на которой вы хотите включить локальное кэширование.

  1. Откройте консоль отладки Firefox (F12).
  2. Откройте настройки консоли (F1).
  3. Включите "Отключить кэш HTTP (когда панель инструментов открыта)".
  4. Держите консоль открытой :)

После очень короткой проверки я не смог найти аналогичные настройки ни в Chrome, ни в IE.

НТН

Ответ 9

Метод, который работает, помещает CKEDITOR с улучшенными файлами конфигурации и css в новый подкаталог:

SRC = "/ckeditor_new_one/ckeditor.js"

Ответ 10

В Firefox:

  • Перейдите к about:config
  • Установите network.http.use-cache в false