Использование Ext, по умолчанию Ext.Ajax добавьте параметр GET-request _dc
. Например
GET /ConnViewProcessing/?_dc=1263286227619
Как удалить этот параметр?
PS: необходимо вручную кэшировать ответ на ETag
и If-None-Match
.
Использование Ext, по умолчанию Ext.Ajax добавьте параметр GET-request _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 для сценариев запросов.
Обратите внимание, что использование Ext.Loader изменилось в ExtJS 5.
В ExtJS 5 кеширование можно отключить:
?cache
" в конец URL-адреса.sencha/app/Boot.js
и установив для свойства '_config.disableCaching
значение true (перезаписывая динамический поиск).Это должно работать с extjs 4.0.7:
Ext.Loader.config.disableCaching = false;
Я использую 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
Установка флага disableCaching
на false
(двойное отрицание - yay!) на Ext.data.Connection должна сделать трюк.
Подробнее см. disableCaching -документация.
(Обратите внимание, что довольно много классов в Ext, похоже, имеют доступную опцию, поэтому вам, возможно, придется немного отбросить.)
Для тех, кто хочет установить "disableCaching: false" в Sencha Architect 3+, вот как..:
В окне инспектора проекта выберите верхний node, "Применение"
Затем в окне "Конфигурация" ниже, где вы установить свойства объекта и т.д., выберите "Loader Config".. в моем случае Я должен был щелкнуть "+" справа от этого, поскольку я не установил никаких пункты еще. Это создаст новый объект "LoaderXX" в "Project Inspector "выше, Loader25 в моем случае.
Теперь либо выберите новый объект в "Инспектор проекта" или нажмите стрелку вправо рядом с новый "LoaderXX" (Loader25 в моем случае). Это приведет вас к свойства объекта.
Отмените элемент "disableCaching".
Сохраните проект и обновите окно браузера, а также наслаждайтесь постоянными точками останова и т.д. и т.д. в 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.NET поверх Ext.JS. Он добавляет еще несколько voodoo в Ext.js... Я попытался избавиться от параметра dc =, но все упомянутые конфигурации не сработали. Итак, это мое эффективное решение uber-dirty:
Ext.Date.now = function () { return ""; }
Насколько я вижу, Ext.Date.now() используется только для логики кэширования. Таким образом, это должно быть сохранение относительности.
Я решил, что хочу, чтобы кэш был уничтожен на стороне клиента, но на стороне сервера я использовал свой собственный механизм кэширования (PHP APC).
Я оставил _dc в запросе Ext ajax, но затем удалил его из REQUEST_URI, а затем использовал REQUEST_URI в качестве основы для ключа кэша
Я нашел это полезным: Регулярное выражение для удаления одного параметра из строки запроса
Вот как я это сделал:
Ext.Ajax.request({
url: url,
disableCaching:false
});
Если вы разрабатываете под Sencha CMD, вы можете сделать это как
http://localhost:1841/?disableCacheBuster
или просто
http://localhost:1841/?cache