使用Ext,默认Ext.Ajax添加到GET-request _dc
参数。例如
GET /ConnViewProcessing/?_dc=1263286227619
如何删除此参数?
PS:有必要手动缓存对ETag
和If-None-Match
的回复。
答案 0 :(得分:28)
将disableCaching
选项设为false:
Ext.Ajax.disableCaching = false;
答案 1 :(得分:22)
使用Ext JS 4.1,将以下代码添加到app.js
后,_dc
参数消失:
// Disable _dc parameter
Ext.Loader.setConfig({
disableCaching: false
});
// My App
Ext.application({
答案 2 :(得分:16)
使用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参数。
答案 3 :(得分:10)
请注意,Ext.Loader的使用在ExtJS 5中已经改变。
在ExtJS 5中,可以禁用缓存:
?cache
"到URL的末尾.sencha/app/Boot.js
并设置'_config.disableCaching
'属性为true(覆盖动态查找)。答案 4 :(得分:8)
我正在使用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
答案 5 :(得分:7)
这适用于extjs 4.0.7:
Ext.Loader.config.disableCaching = false;
答案 6 :(得分:4)
在Ext.data.Connection上设置标志disableCaching
为false
(双重否定 - yay!)应该可以解决问题。
有关更多信息,请查看disableCaching - 文档。
(请注意,Ext中的很多课程似乎都有可用选项,因此您可能需要稍微调试一下。)
答案 7 :(得分:2)
对于那些想在Sencha Architect 3+中设置“disableCaching:false”的人来说,这是如何...:
在项目检查器窗口中,选择顶部节点, “应用程序”
然后在您所在的“配置”窗口下方 设置对象属性等,在我的例子中选择“Loader Config”.. 我不得不点击右侧的“+”,因为我没有设置任何 物品呢。这将在“Project”中创建一个新的“LoaderXX”对象 Inspector“上面的窗口;在我的情况下是Loader25。
现在选择中的新对象 “Project Inspector”窗口,或点击旁边的右箭头 新的“LoaderXX”(在我的情况下是Loader25)。这将带您到 对象的属性。
取消“禁用缓存”项。
保存项目并刷新浏览器窗口,并在Chrome中享受持久性断点等。
答案 8 :(得分:1)
我能够在我的项目中全局禁用ExtJS 4.2.x中的_dc的唯一方法:
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 });
这很难看,但还有其他想法吗?
答案 9 :(得分:1)
这就是我这样做的方式:
Ext.Ajax.request({
url: url,
disableCaching:false
});
答案 10 :(得分:0)
我在Ext.JS上使用Ext.NET。它为Ext.js添加了更多的伏都教...... 我试图摆脱dc =参数,但所有提到的配置都不起作用。所以,这是我的超级有效,超级肮脏的解决方案:
Ext.Date.now = function () { return ""; }
据我所知,Ext.Date.now()仅用于缓存逻辑。所以应该是相对论保存。
答案 11 :(得分:0)
我决定要将缓存销毁到客户端,但服务器端我使用自己的缓存机制(PHP的APC)。
我将_dc留在Ext ajax请求中,但随后将其从REQUEST_URI中删除,然后使用REQUEST_URI作为缓存键的基础
我觉得这很有用:Regular expression to remove one parameter from query string
答案 12 :(得分:0)
如果您使用Sencha CMD开发,您可以这样做
http://localhost:1841/?disableCacheBuster
或只是
http://localhost:1841/?cache