extjs - Eliminando el parámetro_dc en Ext
Así es como hice esto:
Ext.Ajax.request({
url: url,
disableCaching:false
});
Decidí que quería que el caché se destruyera del lado del cliente, pero en el lado del servidor estaba usando mi propio mecanismo de caché (APC de PHP).
Dejé el _dc en la solicitud Ext ajax, pero luego lo eliminé de REQUEST_URI, y luego uso REQUEST_URI como base para la clave de caché
Encontré esto útil: expresión regular para eliminar un parámetro de la cadena de consulta
Establecer el flag disableCaching
en false
(doble negación - yay!) En Ext.data.Connection debería ser el truco.
Para obtener más información, consulte la documentación de disableCaching .
(Tenga en cuenta que bastantes clases en Ext parecen tener la opción disponible, por lo que es posible que tenga que ensuciar un poco).
Establezca la opción disableCaching
en falso:
Ext.Ajax.disableCaching = false;
Esto debería funcionar con extjs 4.0.7:
Ext.Loader.config.disableCaching = false;
Estoy usando ExtJS 4.2, pero esto debería funcionar para Ext JS 4.1 y en adelante. En el proxy hay una propiedad llamada noCache, debe establecer esto en falso.
Ext4.define(''Server'',{
extend: ''Ext4.data.Model'',
fields: [
{name: ''id''},
{name: ''key''},
{name: ''value''}
],
proxy: {
type: ''rest'',
url : ''yaddayaddayadda'',
noCache: false,
reader : {
type: ''json''
}
}
});
La razón por la que mi código dice Ext4. es porque estoy usando el modo de espacio aislado mientras muevo el antiguo código Ext JS 3x a 4.2
La única forma en que pude desactivar _dc en ExtJS 4.2.x globalmente en mi proyecto:
Ext.define(''Ext.data.Connection'', {override:''Ext.data.Connection'', disableCaching:false });
Ext.define(''Ext.data.proxy.Server'', {override:''Ext.data.proxy.Server'', noCache:false });
Ext.define(''Ext.data.JsonP'', {override:''Ext.data.JsonP'', disableCaching:false });
Esto es feo, pero ¿alguna otra idea?
La forma correcta de lograrlo con Sencha Cmd 6.x es establecer un interruptor (global) en app.json
(porque todos esos hacks y anulaciones pueden interferir innecesariamente con la funcionalidad):
"loader": {
"cache": true
},
A continuación, ejecute la sencha app refresh
para actualizar el bootstrap.json
la aplicación.
Alternativamente, uno puede configurar Ext.Loader
(en tiempo de ejecución):
Ext.Loader.setConfig({disableCaching: false});
Al desplazarse hacia arriba y leer la pregunta real, con respecto al Ext.Ajax
(por solicitud):
Ext.Ajax.request({url: ''/ConnViewProcessing'', disableCaching: false});
El resultado: no hay más parámetros _dc en las solicitudes con script.
Para aquellos que quieran configurar "disableCaching: false" en Sencha Architect 3+, aquí está cómo ...:
En la ventana del inspector del proyecto, seleccione el nodo superior, "Aplicación"
Luego, en la ventana "Config" debajo de donde estableces las propiedades del objeto, etc., selecciona "Loader Config" ... en mi caso tuve que hacer clic en el "+" a la derecha de esto ya que aún no había establecido ningún elemento . Esto creará un nuevo objeto "LoaderXX" en la ventana "Inspector de proyectos" arriba; Loader25 en mi caso.
Ahora seleccione el nuevo objeto en la ventana "Inspector de proyectos" o haga clic en la flecha hacia la derecha junto al nuevo "LoaderXX" (Loader25 en mi caso). Esto lo llevará a las propiedades del objeto.
Desate el ítem "disableCaching".
Guarde el proyecto y actualice la ventana del navegador, y disfrute de puntos de interrupción persistentes, etc. en Chrome.
Si se desarrolla bajo Sencha CMD puede hacer esto
http://localhost:1841/?disableCacheBuster
o solo
http://localhost:1841/?cache
Tenga en cuenta que el uso de Ext.Loader ha cambiado en ExtJS 5.
En ExtJS 5, el almacenamiento en caché se puede desactivar:
- temporalmente agregando "
?cache
" al final de la URL - estableciendo una cookie llamada ''ext-cache'' con el valor de 1
- o editando el archivo
.sencha/app/Boot.js
y estableciendo que la propiedad''_config.disableCaching
'' sea verdadera (sobrescribiendo la búsqueda dinámica).
Usando Ext JS 4.1 y después de agregar el siguiente código a app.js
, el parámetro _dc
desaparece:
// Disable _dc parameter
Ext.Loader.setConfig({
disableCaching: false
});
// My App
Ext.application({
Yo uso Ext.NET encima de Ext.JS. Añade algo más de vudú a Ext.js ... Intenté deshacerme del parámetro dc =, pero todas las configuraciones mencionadas no funcionaron. Entonces, esta es mi solución súper efectiva y súper sucia:
Ext.Date.now = function () { return ""; }
Por lo que puedo ver, Ext.Date.now () solo se usa para la lógica de almacenamiento en caché. Entonces debería ser la relatividad, guardar.