删除Ext中的_dc参数

时间:2010-01-12 09:03:05

标签: extjs etag

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

GET /ConnViewProcessing/?_dc=1263286227619

如何删除此参数?

PS:有必要手动缓存对ETagIf-None-Match的回复。

13 个答案:

答案 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参数。

@see Sencha Cmd 6.x - The Microloader

答案 3 :(得分:10)

请注意,Ext.Loader的使用在ExtJS 5中已经改变。

在ExtJS 5中,可以禁用缓存:

  • 暂时添加" ?cache"到URL的末尾
  • 通过设置名为' ext-cache'的cookie值为1
  • 或修改文件.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上设置标志disableCachingfalse(双重否定 - yay!)应该可以解决问题。

有关更多信息,请查看disableCaching - 文档。

(请注意,Ext中的很多课程似乎都有可用选项,因此您可能需要稍微调试一下。)

答案 7 :(得分:2)

对于那些想在Sencha Architect 3+中设置“disableCaching:false”的人来说,这是如何...:

  1. 在项目检查器窗口中,选择顶部节点, “应用程序”

  2. 然后在您所在的“配置”窗口下方 设置对象属性等,在我的例子中选择“Loader Config”.. 我不得不点击右侧的“+”,因为我没有设置任何 物品呢。这将在“Project”中创建一个新的“LoaderXX”对象 Inspector“上面的窗口;在我的情况下是Loader25。

  3. 现在选择中的新对象 “Project Inspector”窗口,或点击旁边的右箭头 新的“LoaderXX”(在我的情况下是Loader25)。这将带您到 对象的属性。

  4. 取消“禁用缓存”项。

  5. 保存项目并刷新浏览器窗口,并在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