Pergunta

Usando Ext, predefinição Ext.ajax adicione à solicitação de get-request _dc parâmetro. Por exemplo

GET /ConnViewProcessing/?_dc=1263286227619

Como remover este parâmetro?

PS: é necessário respostas manualmente em cache a ETag e If-None-Match.

Foi útil?

Solução

Definir disableCaching opção para false:

Ext.Ajax.disableCaching = false;

Outras dicas

Usando o Ext JS 4.1 e depois de adicionar o seguinte código a app.js, a _dc O parâmetro desaparece:

// Disable _dc parameter

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

// My App

Ext.application({

A maneira correta de realizar isso com o Sencha CMD 6.x é definir um interruptor (global) app.json (Porque todos esses hacks e substituições podem interferir desnecessariamente na funcionalidade):

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

Então corra sencha app refresh, para atualizar o aplicativo bootstrap.json.

Alternativamente, pode -se configurar Ext.Loader (em tempo de execução):

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

Ao rolar para cima e ler a pergunta real, sobre Ext.Ajax (por pedido):

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

O resultado: não há mais parâmetros _dc nas solicitações de script.

@Vejo Sencha CMD 6.x - O Microader.

Observe que o uso do Ext.Loader mudou no ExtJS 5.

No extjs 5, o cache pode ser desativado:

  • temporariamente adicionando "?cache"até o final do URL
  • Definindo um cookie chamado 'ext-cache' com o valor de 1
  • ou editando o arquivo .sencha/app/Boot.js e definir o '_config.disableCaching'Propriedade a ser verdadeira (substituindo a pesquisa dinâmica).

Estou usando o ExtJS 4.2, mas isso deve funcionar para o Ext JS 4.1 e ON. No proxy, há uma propriedade chamada Nocache, você deve definir isso como 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'
            }

    }
});

A razão pela qual meu código diz ext4. é porque estou usando o modo Sandbox à medida que movo o código antigo Ext JS 3x para 4.2

Isso deve funcionar com o ExtJS 4.0.7:

Ext.Loader.config.disableCaching = false;

Definindo o sinalizador disableCaching para false (Negação dupla - yay!) No Ext.Data.Connection deve fazer o truque.

Para mais, veja o Desabilando-documentação.

(Observe que algumas aulas no Ext parecem ter a opção disponível, então você pode ter que superar um pouco.)

Para aqueles que desejam definir "desabilitação: false" no Sencha Architect 3+, eis como ..:

  1. Na janela do Inspetor do Projeto, selecione o nó superior, "Aplicativo"

  2. Então, na janela "Config" abaixo daquela onde você define as propriedades do objeto, etc., selecione "Config do carregador" .. No meu caso, tive que clicar no "+" à direita disso, pois ainda não havia definido itens . Isso criará um novo objeto "loaderxx" na janela "Inspetor do projeto" acima; Loader25 no meu caso.

  3. Agora, selecione o novo objeto na janela "Inspetor do Projeto" ou clique na seta direita ao lado do novo "Loaderxx" (Loader25 no meu caso). Isso o levará às propriedades do objeto.

  4. Descarga o item de "desabilitação".

Salve o projeto e atualize a janela do navegador e desfrute de pontos de interrupção persistentes, etc, etc. no Chrome.

A única maneira de desativar o _DC no ExtJS 4.2.x globalmente no meu projeto:

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

Isso é feio, mas quaisquer outras idéias?

Foi assim que eu fiz isso:

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

Eu uso o Ext.Net no topo do Ext.js. Ele adiciona um pouco mais de vodu ao ext.js ... tentei me livrar do parâmetro dc =, mas todas as configurações mencionadas não funcionaram. Então, esta é minha solução super eficaz e super-deirty:

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

Até onde eu posso ver, ext.date.now () é usado apenas para a lógica de cache. Portanto, deve ser uma economia de relatividade.

Decidi que queria que o cache fosse destruído do lado do cliente, mas o lado do servidor eu estava usando meu próprio mecanismo de cache (APC do PHP).

Deixei o _DC na solicitação EX Ajax, mas depois a removi do request_uri e depois uso o request_uri como base para a chave de cache

Eu achei isso útil: Expressão regular para remover um parâmetro da string de consulta

Se você se desenvolver sob Sencha CMD, você pode fazer assim

http://localhost:1841/?disableCacheBuster

ou apenas

http://localhost:1841/?cache
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top