Вопрос

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

GET /ConnViewProcessing/?_dc=1263286227619

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

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

Это было полезно?

Решение

Набор disableCaching вариант false:

Ext.Ajax.disableCaching = false;

Другие советы

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

// Disable _dc parameter

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

// My App

Ext.application({

Правильный способ добиться этого с помощью 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 для запросов по сценарию.

@видеть Sencha Cmd 6.x — микрозагрузчик.

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

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

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

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

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

Ext.Loader.config.disableCaching = false;

Установка флага disableCaching Для false (двойное отрицание - ура!) на Внешние данные.Подключение должно сработать.

Для получения дополнительной информации посмотрите на Отключить кэширование-документация.

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

Для тех, кто хочет установить "Отключить кэширование:ложь" в Sencha Architect 3+, вот как это делается..:

  1. В окне инспектора проектов выберите верхний узел "Приложение"

  2. Затем в окне "Конфигурация" ниже того, где вы устанавливаете свойства объекта и т.д., выберите "Конфигурация загрузчика"..в моем случае Мне пришлось нажать "+" справа от этого, поскольку я еще не установил ни одного элемента.Это создаст новый объект "LoaderXX" в окне "Инспектор проекта " выше;Loader25 в моем случае.

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

  4. Снимите флажок с пункта "Отключить кэширование".

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

Единственный способ отключить _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 });

Это некрасиво, но есть еще идеи?

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

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

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

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

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

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

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

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

Если вы разрабатываете под Sencha CMD, вы можете сделать следующее.

http://localhost:1841/?disableCacheBuster

или просто

http://localhost:1841/?cache
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top