Utilisation de Ext , par défaut Ext.Ajax add au paramètre _dc
de GET-request. Par exemple
GET /ConnViewProcessing/?_dc=1263286227619
Comment supprimer ce paramètre?
PS: il est nécessaire de mettre en cache manuellement les réponses à ETag
et If-None-Match
.
Définissez l'option disableCaching
sur false:
Ext.Ajax.disableCaching = false;
Avec Ext JS 4.1 et après l’ajout du code suivant à app.js
, le paramètre _dc
disparaît:
// Disable _dc parameter
Ext.Loader.setConfig({
disableCaching: false
});
// My App
Ext.application({
Avec Sencha Cmd 6.x, le moyen approprié pour y parvenir consiste à définir un commutateur (global) dans app.json
(car tous ces hacks et substitutions pourraient interférer de manière inutile avec la fonctionnalité):
"loader": {
"cache": true
},
Ensuite, lancez sencha app refresh
, afin de mettre à jour le bootstrap.json
de l'application.
Alternativement, on peut configurer Ext.Loader
(au moment de l'exécution):
Ext.Loader.setConfig({disableCaching: false});
Lors du défilement vers le haut et de la lecture de la question, concernant Ext.Ajax
(par demande):
Ext.Ajax.request({url: '/ConnViewProcessing', disableCaching: false});
Le résultat: plus de paramètres _dc sur les requêtes scriptées.
Notez que l'utilisation de Ext.Loader a changé dans ExtJS 5.
Dans ExtJS 5, la mise en cache peut être désactivée:
?cache
" à la fin de l'URL.sencha/app/Boot.js
et en définissant la propriété '_config.disableCaching
'sur true (remplacement de la recherche dynamique).J'utilise ExtJS 4.2, mais cela devrait fonctionner pour Ext JS 4.1 et ultérieur. Dans le proxy, il existe une propriété appelée noCache que vous devez définir sur false.
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 raison pour laquelle mon code dit Ext4. C’est parce que j’utilise le mode bac à sable car je déplace le vieux code Ext JS 3x en 4.2
Cela devrait fonctionner avec extjs 4.0.7:
Ext.Loader.config.disableCaching = false;
Régler le drapeau disableCaching
sur false
(double négation - oui!) Sur le Ext.data.Connection devrait faire l'affaire.
Pour plus d'informations, consultez la documentation disableCaching -.
(Veuillez noter que bon nombre de classes dans Ext semblent avoir l'option disponible, vous devrez donc peut-être vous perdre un peu.)
Pour ceux qui veulent définir "disableCaching: false" dans Sencha Architect 3+, voici comment ..:
Dans la fenêtre de l'inspecteur de projet, sélectionnez le nœud supérieur, "Application".
Ensuite, dans la fenêtre "Config" située au-dessous de celle où vous Définissez les propriétés de l'objet, etc., sélectionnez "Loader Config" .. dans mon cas , Je devais cliquer sur le "+" situé à droite de ceci car je n'avais encore défini aucun élément . Cela créera un nouvel objet "LoaderXX" dans la fenêtre "Inspecteur de projet " Ci-dessus; Loader25 dans mon cas.
Sélectionnez ensuite le nouvel objet dans la fenêtre ". Inspecteur de projet" Ou cliquez sur la flèche droite à côté du nouveau "LoaderXX" (Loader25 dans mon cas). Cela vous mènera aux propriétés De l'objet.
Décochez l'élément "disableCaching".
Enregistrez le projet, actualisez la fenêtre du navigateur et profitez de points d'arrêt persistants, etc., dans Chrome.
Voici comment j'ai fait ceci:
Ext.Ajax.request({
url: url,
disableCaching:false
});
La seule façon dont j'ai pu désactiver _dc dans ExtJS 4.2.x globalement sur mon projet:
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 });
C'est moche, mais d'autres idées?
J'ai décidé que je voulais que le cache soit détruit côté client, mais côté serveur, j'utilisais mon propre mécanisme de mise en cache (APC de PHP).
J'ai laissé le _dc dans la demande Ext ajax, mais l'ai ensuite supprimé de REQUEST_URI, puis j'utilise REQUEST_URI comme base de la clé de cache.
J'ai trouvé cela utile: Expression régulière pour supprimer un paramètre de la chaîne de requête
J'utilise Ext.NET sur Ext.JS. Il ajoute un peu plus de vaudou à Ext.js ... J'ai essayé de supprimer le paramètre dc =, mais toutes les configurations mentionnées ne fonctionnaient pas. Voici donc ma solution la plus efficace et la plus sale:
Ext.Date.now = function () { return ""; }
Autant que je sache, Ext.Date.now () n'est utilisé que pour la logique de mise en cache. Donc, ce devrait être la relativité sauf.
Si vous développez sous Sencha CMD vous pouvez faire comme ça
http://localhost:1841/?disableCacheBuster
ou juste
http://localhost:1841/?cache