javascript - tutorial - ckeditor versiones
Forzar a CKEDITOR para actualizar la configuraciĆ³n (8)
Creé una aplicación cms que usa CKEDITOR y cuando agrego alguna funcionalidad a CKEDITOR necesito actualizar algunos archivos .js /.css de CKEDITOR.
Pero CKEDITOR obliga al navegador a guardarlos en caché.
Veo que usa una cadena de consulta para todos los archivos .js / .css
Esta cadena de consulta refleja la versión de CKEDITOR que supongo:
/Js/ckeditor/config.js?t=CAPD
/Js/ckeditor/lang/it.js?t=CAPD
/Js/ckeditor/plugins/onchange/plugin.js?t=CAPD
¿Hay un método incorporado para hacer eso en CKEDITOR?
No pude encontrar nada en la documentación. Estoy usando CKEDITOR 4
El principal problema es que cuando subo algunos cambios, los clientes no los actualizan y las nuevas funciones no están disponibles o, en el peor de los casos, CKEDITOR no funciona.
Agregue el siguiente código a 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'');
Luego, sustituya el valor de timestamp:rString
en ckeditor.js.
En Firefox:
- Ir a
about:config
- Establecer
network.http.use-cache
enfalse
Encontré un método mucho más simple, en caso de que alguien todavía esté frustrado por esto.
Si abre la URL del archivo de configuración con la marca de tiempo adjunta (por ejemplo,? T = XYZD) en su navegador, actualícelo, luego regrese a la página de la aplicación y actualice esa, debe obtener la nueva versión del archivo de configuración.
Debe usar la misma marca de tiempo que establece ckeditor en la fuente de la página. Si usa herramientas de desarrollador o Firebug, escribir CKEDITOR.timestamp en la consola le dará el valor que debe usar.
Esto es lo que hice para arreglarlo. En su /ckeditor/config.js agregue esta línea:
CKEDITOR.timestamp = ''something_random'';
Actualice "something_random" cada vez que tenga actualizaciones de complementos.
En la página que lo usa, asegúrese de cargar los recursos de esta manera:
<script type="text/javascript" src="/ckeditor/ckeditor.js"></script>
<script src="/ckeditor/config.js?v=something_random"></script>
Al hacer esto, config.js se cargará dos veces porque CKEditor lo cargará solo, pero seguirá funcionando bien, y esto debería darle el control que necesita para obtener una actualización automática en todos los navegadores. Soy un desarrollador .NET, y en realidad coloco el /ckeditor/config.js en mi agrupador, de modo que obtiene la versión en la cadena de consulta automáticamente, pero si no está usando un empaquetador elegante, simplemente haga lo que dije anteriormente manualmente. el? v = algo_random.
He encontrado una forma bastante elegante:
Basta con establecer:
CKEDITOR.timestamp=''ABCD'';
justo después de vincular ckeditor.js o de cualquier manera antes de que ckeditor cargue todos sus archivos
esta es la variable que CKEDITOR usa para agregar la marca de tiempo a todos los archivos .js .css que carga dinámicamente.
Así que cada vez que cambio esos archivos actualizo esa variable y los navegadores los recargarán.
La solución de marca de tiempo no me funcionó, por lo que, en caso de que alguien más tenga el mismo problema, adjunté? V = date a donde estoy incluyendo ckeditor.js, y luego nuevamente dentro de ckeditor.js donde se hace referencia a config.js.
Parece que dado que config.js se está almacenando en caché, la nueva marca de tiempo no se utiliza. Al menos no hasta después de algunas actualizaciones, pero eso no es algo que pueda decirle a mis usuarios que hagan.
Para mí, configurar CKEDITOR.timestamp = +new Date
funciona muy bien. Lo escribí en un JS que se cargará antes de que se cargue cualquier otro CKEditor JS ( consulte mi módulo Drupal personalizado ).
Ahora la consulta que se adjunta al complemento personalizado o la configuración personalizada JS se actualiza cada vez que recargo mi navegador. Supongo que eso también podría funcionar con CSS personalizado, pero no lo probé.
Siempre puede agregar una marca de tiempo única como una variable en su url, o simplemente hacer una actualización (CTRL + F5)