Domanda

Ext , di default Ext.Ajax aggiungi a GET-richiesta di parametri _dc. Ad esempio

GET /ConnViewProcessing/?_dc=1263286227619

Come rimuovere questo parametro?

PS: è necessario risposta cache manualmente a ETag e If-None-Match

.
È stato utile?

Soluzione

Impostare l'opzione disableCaching su false:

Ext.Ajax.disableCaching = false;

Altri suggerimenti

Utilizzando Ext JS 4.1, e dopo aver aggiunto il seguente codice app.js, il parametro _dc scompare:

// Disable _dc parameter

Ext.Loader.setConfig({
    disableCaching: false
});

// My App

Ext.application({

Il modo corretto per realizzare ciò con Sencha Cmd 6.x è impostare un interruttore (globale) in app.json (perché tutte quelle hack e sostituzioni potrebbero interferire con la funzionalità inutilmente):

"loader": {
    "cache": true
},

Quindi eseguire sencha app refresh, al fine di aggiornare bootstrap.json dell'applicazione.

In alternativa, si può configurare Ext.Loader (a run-time):

Ext.Loader.setConfig({disableCaching: false});

Quando si scorre verso l'alto e la lettura della domanda effettiva, che riguardano Ext.Ajax (per richiesta):

Ext.Ajax.request({url: '/ConnViewProcessing', disableCaching: false});

Il risultato: nessun parametro più _dc sulle richieste di script

.

Sencha Cmd 6.x -. La microloader

Si noti che l'uso di Ext.Loader è cambiato in ExtJS 5.

In ExtJS 5, la cache può essere disabilitato:

  • temporaneamente con l'aggiunta di "?cache" al fine dell'URL
  • impostando un cookie chiamato 'ext-cache' con il valore di 1
  • o modificando il file .sencha/app/Boot.js e impostando la '_config.disableCaching' immobile per essere vero (sovrascrivendo il lookup dinamico).

Sto usando ExtJS 4.2, ma questo dovrebbe funzionare per Ext JS 4.1 e su. Nella delega v'è una proprietà chiamata nocache si dovrebbe impostare questo su 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 ragione per il mio codice dice Ext4. è perché sto usando la modalità sandbox, come mi muovo vecchio codice 3x Ext JS in 4.2

Questo dovrebbe funzionare con extjs 4.0.7:

Ext.Loader.config.disableCaching = false;

Impostazione della disableCaching bandiera per false (doppia negazione - yay!) Sulla Ext.data.Connection dovrebbe fare il trucco.

Per ulteriori informazioni, consultare il disableCaching -Documentazione.

(Si prega di notare che non pochi classi in Ext sembrano avere l'opzione disponibile, in modo potrebbe essere necessario impazzire un po '.)

Per coloro che vogliono impostare "disableCaching: false" in Sencha Architetto 3+, ecco come ..:

  1. Nella finestra di ispezione del progetto, selezionare il nodo superiore, "Applicazione"

  2. Poi, nella finestra "Config" inferiore a quello in cui si impostare le proprietà degli oggetti, ecc, selezionare "Loader Config" .. nel mio caso Ho dovuto fare clic sul "+" a destra di questo come non avevo impostare qualsiasi ancora articoli. Questo creerà un nuovo oggetto "LoaderXX" nel "Progetto Ispettore" finestra sopra; Loader25 nel mio caso

  3. .
  4. Ora, o selezionare il nuovo oggetto nella finestra "Progetto Ispettore", oppure fare clic sulla freccia a destra accanto al nuova "LoaderXX" (Loader25 nel mio caso). Questo vi porterà alla proprietà per l'oggetto.

  5. Deseleziona la voce "disableCaching".

Salvare il progetto e aggiornare la finestra del browser, e godere di punti di arresto persistenti, ecc, ecc in Chrome.

L'unico modo sono stato in grado di disattivare _dc in ExtJS 4.2.x a livello globale sul mio progetto:

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 });

Questo è brutto, ma altre idee?

Questo è il modo che ho fatto in questo modo:

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

Io uso Ext.NET in cima Ext.JS. Si aggiunge un po 'di voodoo per Ext.js ... Ho cercato di sbarazzarsi del dc = parametri, ma tutte le configurazioni di cui non ha funzionato. Quindi, questa è la mia soluzione uber-sporca uber-efficace:

Ext.Date.now = function () { return ""; }

Per quanto posso vedere, Ext.Date.now () viene utilizzato solo per la logica di caching. Così dovrebbe essere la relatività salvare.

ho deciso che volevo la cache per essere distrutto lato client, ma lato server stavo usando il mio meccanismo di caching (PHP APC).

Ho lasciato il _dc nella richiesta Ajax Ext, ma poi rimosso dal REQUEST_URI, e quindi utilizzare il REQUEST_URI come base per la chiave di cache

Ho trovato questo utile: espressioni regolari per rimuovere un parametro da string query

Se si sviluppa sotto Sencha CMD si può fare in questo modo

http://localhost:1841/?disableCacheBuster

o semplicemente

http://localhost:1841/?cache
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top