Подтвердить что ты не робот

Удаление параметра _dc в Ext

Использование Ext, по умолчанию Ext.Ajax добавьте параметр GET-request _dc. Например

GET /ConnViewProcessing/?_dc=1263286227619

Как удалить этот параметр?

PS: необходимо вручную кэшировать ответ на ETag и If-None-Match.

4b9b3361

Ответ 1

Установите для параметра disableCaching значение false:

Ext.Ajax.disableCaching = false;

Ответ 2

Используя Ext JS 4.1, и после добавления следующего кода в app.js параметр _dc исчезает:

// Disable _dc parameter

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

// My App

Ext.application({

Ответ 3

Правильный способ выполнить это с помощью Sencha Cmd 6.x - установить (глобальный) переключатель в app.json (потому что все эти хаки и переопределения могут беспорядочно вмешиваться в функциональность):

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

Затем запустите sencha app refresh, чтобы обновить приложение bootstrap.json.

В качестве альтернативы можно настроить Ext.Loader (во время выполнения):

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

При прокрутке вверх и чтении актуального вопроса, касающегося Ext.Ajax (за запрос):

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

Результат: не больше параметров _dc для сценариев запросов.

@see Sencha Cmd 6.x - Microloader.

Ответ 4

Обратите внимание, что использование Ext.Loader изменилось в ExtJS 5.

В ExtJS 5 кеширование можно отключить:

  • временно, добавив "?cache" в конец URL-адреса
  • установив файл cookie с именем 'ext-cache' со значением 1
  • или отредактировав файл .sencha/app/Boot.js и установив для свойства '_config.disableCaching значение true (перезаписывая динамический поиск).

Ответ 5

Это должно работать с extjs 4.0.7:

Ext.Loader.config.disableCaching = false;

Ответ 6

Я использую ExtJS 4.2, но это должно работать для Ext JS 4.1 и on. В прокси-сервере есть свойство, называемое noCache, которое вы должны установить в значение 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'
            }

    }
});

Причина, по которой мой код говорит Ext4. потому что я использую режим песочницы, когда я перемещаю старый код Ext JS 3x в 4.2

Ответ 7

Установка флага disableCaching на false (двойное отрицание - yay!) на Ext.data.Connection должна сделать трюк.

Подробнее см. disableCaching -документация.

(Обратите внимание, что довольно много классов в Ext, похоже, имеют доступную опцию, поэтому вам, возможно, придется немного отбросить.)

Ответ 8

Для тех, кто хочет установить "disableCaching: false" в Sencha Architect 3+, вот как..:

  • В окне инспектора проекта выберите верхний node, "Применение"

  • Затем в окне "Конфигурация" ниже, где вы установить свойства объекта и т.д., выберите "Loader Config".. в моем случае Я должен был щелкнуть "+" справа от этого, поскольку я не установил никаких пункты еще. Это создаст новый объект "LoaderXX" в "Project Inspector "выше, Loader25 в моем случае.

  • Теперь либо выберите новый объект в "Инспектор проекта" или нажмите стрелку вправо рядом с новый "LoaderXX" (Loader25 в моем случае). Это приведет вас к свойства объекта.

  • Отмените элемент "disableCaching".

Сохраните проект и обновите окно браузера, а также наслаждайтесь постоянными точками останова и т.д. и т.д. в Chrome.

Ответ 9

Единственный способ, которым я смог отключить _dc в ExtJS 4.2.x глобально в моем проекте:

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

Это уродливое, но любые другие идеи?

Ответ 10

Я использую Ext.NET поверх Ext.JS. Он добавляет еще несколько voodoo в Ext.js... Я попытался избавиться от параметра dc =, но все упомянутые конфигурации не сработали. Итак, это мое эффективное решение uber-dirty:

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

Насколько я вижу, Ext.Date.now() используется только для логики кэширования. Таким образом, это должно быть сохранение относительности.

Ответ 11

Я решил, что хочу, чтобы кэш был уничтожен на стороне клиента, но на стороне сервера я использовал свой собственный механизм кэширования (PHP APC).

Я оставил _dc в запросе Ext ajax, но затем удалил его из REQUEST_URI, а затем использовал REQUEST_URI в качестве основы для ключа кэша

Я нашел это полезным: Регулярное выражение для удаления одного параметра из строки запроса

Ответ 12

Вот как я это сделал:

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

Ответ 13

Если вы разрабатываете под Sencha CMD, вы можете сделать это как

http://localhost:1841/?disableCacheBuster

или просто

http://localhost:1841/?cache