2010-01-12 2 views
27

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

GET /ConnViewProcessing/?_dc=1263286227619 

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

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

+0

ммм ... принимаем пожалуйста ? – Lukman

+0

для Ext-JS 6 эти 3 метода не работают ... Единственное, что я нашел, это положить в boot.js disableCaching: true, Я знаю, что это не имеет смысла, но если вы посмотрите на код в загрузке. js, вот как это работает. в любом случае, это действительно не помогает, потому что тогда некоторые из обратных вызовов работают неправильно. – zerkotin

ответ

28

Set disableCaching вариант ложно:

Ext.Ajax.disableCaching = false; 
+4

Это выглядит как глобальный флаг. Есть ли способ сделать это по запросу? У меня есть некоторые запросы, которые я хочу кэшировать, и некоторые из них я хочу добавить параметр кэширования. – Eric

+0

@ Эрик установлен на 'false', затем выполняет запросы, а затем возвращается к' true' ... – Lukman

+1

Одно примечание - отключить кеширование приведет к кэшированию данных в IE (и, возможно, других). –

4

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

Для получения дополнительной информации см. disableCaching -документация.

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

7

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

Ext.Loader.config.disableCaching = false; 
22

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

// Disable _dc parameter 

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

// My App 

Ext.application({ 
+0

Это влияет только на загрузку ресурсов, а не на Ext.Ajax. В случае, если другие сталкиваются с этим ответом и хотят иметь возможность отключить переполнение кеша для скриптов и т. Д. При использовании Architect или просто отключить его только при отладке, я опубликовал ответ, в котором содержится дополнительная информация [здесь] (http: // stackoverflow .com/a/30992255/857209) –

0

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

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

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

7

Я использую 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

+0

Подтвердите, что noCache работает для Ajax Proxy под v4.2.1 (двойное отрицание отстой) –

1

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

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

0

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

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

Я нашел этот полезный: Regular expression to remove one parameter from query string

2

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

  1. В окне проекта инспектора, выберите верхний узел, «Применение»

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

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

  4. Отключить элемент «disableCaching».

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

+0

Работает, как описано! – Dejo

+0

:-) рад, что это помогло. – Ads

+0

Не работал для меня с Architect v3.2. Я не пробовал ранее версии 3.x. Код изменен для установки 'disableCaching: false', но я подозреваю, что этот параметр загрузчика во время выполнения больше не работает, потому что теперь Архитектор использует SenchaCmd при сохранении проекта. Однако изменение файла ** app.json ** в соответствии с ответом syslogic действительно работало. –

10

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

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

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

Правильный способ для достижения этой цели с Сенча 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 - The Microloader.

+0

Мне пришлось это сделать после обновления от Sencha Architect v2.2 до v3.2. Похоже, что установка загрузчика во время работы больше не работает, по-видимому, потому, что Architect теперь использует SenchaCmd. –

+1

Я только что обнаружил, что могу отключить использование SenchaCmd Architect 3.2, отключив ** Build Tools ** в ** Настройки проекта ** -> ** Framework **, что означает, что я могу снова использовать 'disableCaching = false' в настройки загрузчика и даже изменить его во время выполнения, как показано [здесь] (http://stackoverflow.com/a/30992255/857209) –

+0

@ GlennLawrence обновил это. –

0

Это, как я сделал это:

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

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

http://localhost:1841/?disableCacheBuster 

или просто

http://localhost:1841/?cache 

 Смежные вопросы

  • Нет связанных вопросов^_^