Вопрос
Используя Внутренний, по умолчанию Внутр.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+, вот как это делается..:
В окне инспектора проектов выберите верхний узел "Приложение"
Затем в окне "Конфигурация" ниже того, где вы устанавливаете свойства объекта и т.д., выберите "Конфигурация загрузчика"..в моем случае Мне пришлось нажать "+" справа от этого, поскольку я еще не установил ни одного элемента.Это создаст новый объект "LoaderXX" в окне "Инспектор проекта " выше;Loader25 в моем случае.
Теперь либо выберите новый объект в окне "Инспектор проекта", либо нажмите на стрелку вправо рядом с новым "LoaderXX" (в моем случае Loader25).Это приведет вас к разделу свойства объекта.
Снимите флажок с пункта "Отключить кэширование".
Сохраните проект и обновите окно браузера, а также наслаждайтесь постоянными точками останова и т.д. и т.п. В 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