删除Ext中的参数(_D)

o0lyfsai  于 2022-09-26  发布在  其他
关注(0)|答案(14)|浏览(189)

使用Ext,默认Ext.Ajax添加到GET请求_dc参数。例如

GET /ConnViewProcessing/?_dc=1263286227619

如何删除此参数?
PS:有必要手动缓存对ETagIf-None-Match的响应。

vulvrdjw

vulvrdjw1#

disableCaching选项设置为false:

Ext.Ajax.disableCaching = false;
33qvvth1

33qvvth12#

使用Ext JS 4.1,将以下代码添加到app.js后,_dc参数消失:

// Disable _dc parameter

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

// My App

Ext.application({
vwoqyblh

vwoqyblh3#

使用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 - The Microloader

ercv8c1e

ercv8c1e4#

请注意,Ext.Loader在ExtJS 5中的使用已更改。
在ExtJS 5中,可以禁用缓存:

  • 通过在URL末尾添加“?cache”来暂时
  • 通过将名为“ext-cache”的cookie的值设置为1
  • 或者编辑文件.sencha/app/Boot.js并将'_config.disableCaching'属性设置为true(覆盖动态查找)。
vhipe2zx

vhipe2zx5#

我使用的是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.的原因是,当我将旧的ExtJS3x代码移到4.2时,我使用了沙箱模式

kx5bkwkv

kx5bkwkv6#

这应该适用于extjs 4.0.7:

Ext.Loader.config.disableCaching = false;
bksxznpy

bksxznpy7#

将标志disableCaching设置为e1d1e(双重否定-yay!)在Ext.data上。连接应该可以做到这一点。
有关更多信息,请参阅disableCaching文档。
(请注意,Ext中相当多的类似乎都有可用的选项,因此您可能需要做一些修改。)

zpgglvta

zpgglvta8#

对于那些想在Sencha Architect 3+中设置“disableCaching:false”的用户,以下是如何设置的…:
1.在项目检查器窗口中,选择顶部节点“应用程序”
1.然后在您设置对象属性等的“Config”窗口下方,选择“Loader Config”。在我的情况下,我必须单击右侧的“+”,因为我尚未设置任何项目。这将在上面的“项目检查器”窗口中创建一个新的“LoaderXX”对象;Loader25在我的案例中。
1.现在要么在“项目检查器”窗口中选择新对象,要么单击新“LoaderXX”旁边的右箭头(在我的例子中是Loader25)。这将带您进入对象的属性。
1.取消勾选“disableCaching”项。
保存项目并刷新浏览器窗口,在Chrome中享受持久断点等。

cgh8pdjw

cgh8pdjw9#

我能够在项目中全局禁用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 });

这很难看,但还有其他想法吗?

lh80um4z

lh80um4z10#

我就是这样做的:

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

xe55xuns11#

我决定要销毁客户端的缓存,但在服务器端,我使用了自己的缓存机制(PHP的APC)。
我在Ext ajax请求中保留了_dc,但随后将其从request_URI中删除,然后使用request-URI作为缓存键的基础
我发现这很有用:Regular expression to remove one parameter from query string

0lvr5msh

0lvr5msh12#

如果你在Sencha CMD下开发,你可以这样做

http://localhost:1841/?disableCacheBuster

或者只是

http://localhost:1841/?cache
ht4b089n

ht4b089n13#

对于所有正在寻找在新版本中禁用它的方法的人:

proxy: {
    type: 'ajax',
    noCace: false
}
mqxuamgl

mqxuamgl14#

我在Ext.JS上使用Ext.NET。它向Ext.js添加了更多的voodoo……我试图去掉dc=参数,但所有提到的配置都不起作用。所以,这是我的超级有效、超级肮脏的解决方案:

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

据我所知,分机日期。now()仅用于缓存逻辑。所以它应该是相对论保存。

相关问题