web-dev-qa-db-fra.com

Suppression du paramètre _dc dans Ext

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.

30
ko1ik

Définissez l'option disableCaching sur false:

Ext.Ajax.disableCaching = false;
28
Lukman

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({
22
Pencroff

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.

@see Sencha Cmd 6.x - Le Microloader .

16
Martin Zeitler

Notez que l'utilisation de Ext.Loader a changé dans ExtJS 5.

Dans ExtJS 5, la mise en cache peut être désactivée:

  • temporairement en ajoutant "?cache" à la fin de l'URL
  • en définissant un cookie appelé 'ext-cache' avec la valeur 1
  • ou en modifiant le fichier .sencha/app/Boot.js et en définissant la propriété '_config.disableCaching 'sur true (remplacement de la recherche dynamique).
10
Robert Watkins

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

8
Vince Cordaro

Cela devrait fonctionner avec extjs 4.0.7:

Ext.Loader.config.disableCaching = false;
7
Night Warrier

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.)

4
Morten Siebuhr

Pour ceux qui veulent définir "disableCaching: false" dans Sencha Architect 3+, voici comment ..:

  1. Dans la fenêtre de l'inspecteur de projet, sélectionnez le nœud supérieur, "Application".

  2. 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.

  3. 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.

  4. 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.

2
Ads

Voici comment j'ai fait ceci:

Ext.Ajax.request({
    url: url,
    disableCaching:false
});
1
leshicus

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?

1
star.absorber

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

0
user2066719

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.

0
Johannes Hoppe

Si vous développez sous Sencha CMD vous pouvez faire comme ça

http://localhost:1841/?disableCacheBuster

ou juste

http://localhost:1841/?cache
0
nahab