extjs - Ext में _dc पैरामीटर को हटा रहा है




etag (12)

Ext का उपयोग करके, डिफ़ॉल्ट Ext.Ajax GET-request _dc पैरामीटर में जोड़ें। उदाहरण के लिए

GET /ConnViewProcessing/?_dc=1263286227619

इस पैरामीटर को कैसे हटाएं?

पीएस: ETag और If-None-Match लिए मैन्युअल रूप से प्रतिक्रिया कैश करना आवश्यक है।


Answers

मैं ExtJS 4.2 का उपयोग कर रहा हूं, लेकिन इसे Ext JS 4.1 और चालू करने के लिए काम करना चाहिए। प्रॉक्सी में नोकैच नामक एक संपत्ति है जिसे आपको इसे गलत पर सेट करना चाहिए।

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 कहता है। ऐसा इसलिए है क्योंकि मैं सैंडबॉक्स मोड का उपयोग कर रहा हूं क्योंकि मैं पुराना एक्सएस जेएस 3 एक्स कोड 4.2 में ले जाता हूं


मैं Ext.JS के शीर्ष पर Ext.NET का उपयोग करता हूं। यह Ext.js को कुछ और वूडू जोड़ता है ... मैंने डीसी = पैरामीटर से छुटकारा पाने की कोशिश की, लेकिन सभी उल्लिखित कॉन्फ़िगरेशन काम नहीं कर पाए। तो, यह मेरा उबर-प्रभावी, उबर-गंदा समाधान है:

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

जहां तक ​​मैं देख सकता हूं, Ext.Date.now () केवल कैशिंग तर्क के लिए उपयोग किया जाता है। तो यह सापेक्षता बचा जाना चाहिए।


उन लोगों के लिए जो सेन्चा आर्किटेक्ट 3+ में "अक्षम कैशिंग: झूठी" सेट करना चाहते हैं, यहां बताया गया है कि कैसे ..:

  1. प्रोजेक्ट इंस्पेक्टर विंडो में, शीर्ष नोड का चयन करें, "एप्लिकेशन"

  2. फिर नीचे "कॉन्फ़िगर" विंडो में जहां आप ऑब्जेक्ट गुण सेट करते हैं, आदि, "लोडर कॉन्फ़िगर" का चयन करें .. मेरे मामले में मुझे इसके दाईं ओर "+" पर क्लिक करना था क्योंकि मैंने अभी तक कोई आइटम सेट नहीं किया था । यह उपरोक्त "प्रोजेक्ट इंस्पेक्टर" विंडो में एक नया "लोडरXX" ऑब्जेक्ट बनाएगा; मेरे मामले में लोडर 25।

  3. अब या तो "प्रोजेक्ट इंस्पेक्टर" विंडो में नई ऑब्जेक्ट का चयन करें, या नए "लोडरXX" (मेरे मामले में लोडर25) के बगल में दायां तीर पर क्लिक करें। यह आपको वस्तु के गुणों पर ले जाएगा।

  4. "अक्षम कैशिंग" आइटम को अनचेक करें।

प्रोजेक्ट को सहेजें और ब्राउजर विंडो को रीफ्रेश करें, और क्रोम में लगातार ब्रेकपॉइंट्स इत्यादि का आनंद लें।


इस तरह मैंने यह किया:

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

ध्यान दें कि Ext.Loader का उपयोग ExtJS 5 में बदल गया है।

ExtJS 5 में, कैशिंग अक्षम किया जा सकता है:

  • अस्थायी रूप से यूआरएल के अंत में " ?cache " जोड़कर
  • 1 के मूल्य के साथ 'ext-cache' नामक कुकी सेट करके
  • या फ़ाइल को संपादित करके .sencha/app/Boot.js और '_config.disableCaching ' प्रॉपर्टी को सत्य होने के लिए सेट करना (गतिशील लुकअप को ओवरराइट करना)।

disableCaching करने के लिए disableCaching विकल्प सेट करें:

Ext.Ajax.disableCaching = false;

मैंने फैसला किया कि मैं चाहता हूं कि कैश क्लाइंट साइड को नष्ट कर दे, लेकिन सर्वर की तरफ मैं अपने कैशिंग तंत्र (PHP के एपीसी) का उपयोग कर रहा था।

मैंने एक्स्ट AJAX अनुरोध में _dc छोड़ा, लेकिन फिर इसे REQUEST_URI से हटा दिया, और उसके बाद REQUEST_URI को कैश कुंजी के आधार के रूप में उपयोग करें

मुझे यह उपयोगी मिला: क्वेरी स्ट्रिंग से एक पैरामीटर को हटाने के लिए नियमित अभिव्यक्ति


एकमात्र तरीका मैं अपने प्रोजेक्ट पर विश्व स्तर पर 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 });

यह बदसूरत है, लेकिन कोई अन्य विचार है?


disableCaching पर झंडा disableCaching को false (डबल अस्वीकरण - yay!) पर Ext.data.Connection करना चाल Ext.data.Connection चाहिए।

अधिक जानकारी के लिए, disableCaching कैशिंग- disableCaching देखें।

(कृपया ध्यान दें कि एक्स्ट में कुछ कक्षाओं में विकल्प उपलब्ध है, इसलिए आपको थोड़ा सा मक्का करना पड़ सकता है।)


Ext JS 4.1 का उपयोग करके, और निम्न कोड को app.js जोड़ने के बाद, _dc पैरामीटर गायब हो जाता है:

// Disable _dc parameter

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

// My App

Ext.application({

app.json सीएमडी 6.x के साथ इसे पूरा करने का सही तरीका app.json में एक (ग्लोबल) स्विच सेट app.json (क्योंकि उन सभी हैक्स और ओवरराइड कार्यक्षमता के साथ अनावश्यक रूप से हस्तक्षेप कर सकते हैं):

"loader": {
    "cache": true
},

फिर अनुप्रयोग के bootstrap.json को अद्यतन करने के लिए, sencha app refresh चलाएं।

वैकल्पिक रूप से, कोई Ext.Loader को कॉन्फ़िगर कर सकता है (रन-टाइम पर):

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

Ext.Ajax (प्रति अनुरोध) से संबंधित, ऊपर की ओर स्क्रॉल करते हुए और वास्तविक प्रश्न को पढ़ने पर:

Ext.Ajax.request({url: '/ConnViewProcessing', disableCaching: false});

नतीजा: लिखित अनुरोधों पर और अधिक _ डीसी पैरामीटर नहीं।

@ से सेन्चा सीएमडी 6.x - माइक्रो्रोलर


मैं सामग्री के एक हैश उत्पन्न करने की सलाह देते हैं, उदाहरण के लिए md5($content)
इसके अतिरिक्त, हैश टकराव को रोकने के लिए, आप इसे सामग्री तत्व की आईडी जोड़ना चाहेंगे (यदि यह उचित है)।