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パラメータはもうありません。
@see Sencha Cmd 6.x-マイクロローダー 。
ExtJS 5ではExt.Loaderの使用が変更されていることに注意してください。
ExtJS 5では、キャッシングを無効にすることができます。
?cache
」を追加する.sencha/app/Boot.js
を編集し、'_config.disableCaching
'プロパティをtrueに設定します(動的ルックアップを上書きします)。私は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に移動するときにサンドボックスモードを使用しているためです
これはextjs 4.0.7で動作するはずです。
Ext.Loader.config.disableCaching = false;
Ext.data.Connection でフラグdisableCaching
をfalse
(二重否定-yay!)に設定すると、うまくいくはずです。
詳細については、 disableCaching -documentationを参照してください。
(Extのかなりの数のクラスが利用可能なオプションを持っているように見えるので、あなたは少しぐったりする必要があるかもしれないことに注意してください。)
Sencha Architect 3+で「disableCaching:false」を設定したい人のために、ここに方法を示します。
プロジェクトインスペクタウィンドウで、最上位ノード「アプリケーション」を選択します。
次に、オブジェクトのプロパティなどを設定するその下の[Config]ウィンドウで、[Loader Config]を選択します。私の場合、まだ項目を設定していないため、この右側の[+]をクリックする必要がありました。 。これにより、上の[プロジェクトインスペクタ]ウィンドウに新しい "LoaderXX"オブジェクトが作成されます。私の場合、Loader25。
ここで、[プロジェクトインスペクタ]ウィンドウで新しいオブジェクトを選択するか、新しい[LoaderXX](私の場合はLoader25)の横にある右矢印をクリックします。これにより、オブジェクトのプロパティが表示されます。
「disableCaching」アイテムのチェックを外します。
プロジェクトを保存してブラウザウィンドウを更新し、Chromeで永続的なブレークポイントなどをお楽しみください。
これは私がこれをした方法です:
Ext.Ajax.request({
url: url,
disableCaching:false
});
私のプロジェクトで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 });
これは醜いですが、他のアイデアはありますか?
キャッシュをクライアント側で破棄することにしましたが、サーバー側では独自のキャッシュメカニズム(PHPのAPC)を使用していました。
Ext ajaxリクエストに_dcを残しましたが、REQUEST_URIから削除し、REQUEST_URIをキャッシュキーのベースとして使用しました
私はこれが便利だと思いました: クエリ文字列から1つのパラメーターを削除する正規表現
Ext.JSの上でExt.NETを使用しています。 Ext.jsにいくつかのブードゥーを追加します... dc =パラメーターを削除しようとしましたが、言及されたすべての構成が機能しませんでした。だから、これは私の超効果的で超汚いソリューションです:
Ext.Date.now = function () { return ""; }
私の知る限り、Ext.Date.now()はキャッシュロジックにのみ使用されます。したがって、相対性を保存する必要があります。
Sencha CMDで開発する場合、次のようにすることができます
http://localhost:1841/?disableCacheBuster
あるいは単に
http://localhost:1841/?cache