2012-03-16 15 views
15

मैं गूगल क्रोम का उपयोग कर रहा हूँ और मैंने देखा है कि हर बार जब मैं एक XHR अनुरोध करते हैं मैं निम्न हेडर अनुरोध पर रखे गये:jQuery XmlHttpRequest कैश-नियंत्रण अनदेखा किया जा रहा

Cache-Control: no-cache 
Pragma: no-cache 

आप पर कल्पना पढ़ें http://www.w3.org/TR/XMLHttpRequest/ यह कहता है कि उपयोगकर्ता एजेंट एक HTTP कैश यह लेखक अनुरोध शीर्षों में कैश नियंत्रण हेडर का सम्मान करना चाहिए (उदाहरण के लिए कैश-नियंत्रण: कोई कैश कैश नजरअंदाज) को लागू करता है निम्नलिखित

हैं। इसे कैश-कंट्रोल या प्रोगमा अनुरोध हेडर स्वचालित रूप से तब तक नहीं भेजना चाहिए जब तक कि अंतिम उपयोगकर्ता स्पष्ट रूप से ऐसे व्यवहार (जैसे पृष्ठ को पुनः लोड करके) का अनुरोध करता है।

खैर मैं कोशिश कर रहा हूँ निम्नलिखित:

$.ajax(myUrl, { 
    type: 'get', 
    dataType: 'json' 
    cache: true, 
    headers: { 
     'Cache-Control': 'max-age=200' 
    } 
    }) 

आप मैं स्पष्ट रूप से मेरी संसाधन की कैश्ड प्रतिलिपि प्राप्त करने की उम्मीद में कैश नियंत्रण हेडर सेट कर रहा हूं देख सकते हैं। खैर क्रोम कैश-कंट्रोल हेडर को अनदेखा करता है।

क्या एक्सएचआर अनुरोध करते समय Cache-Control: no-cache शीर्षलेख नहीं भेजना संभव है?

उत्तर

46

यह एक गूंगा गलती थी। मेरे पास डेवलपर टूल्स "कैश अक्षम करें" पर सेट था। यही कारण है कि यह हमेशा कैश-कंट्रोल हेडर जोड़ रहा था। यदि यह कभी आपके साथ होता है तो सुनिश्चित करें कि आप सुनिश्चित करते हैं कि बॉक्स चेक नहीं किया गया है।

राउल

+1

हां, ध्यान दें कि फायरबग में "नेट" मेनू में "ब्राउज़र कैश अक्षम करें" भी है। मैं भी इस से काटा गया है। – harpo

+0

मैं यह पता लगाने की कोशिश कर रहा हूं कि देशी fetch() कैश से डेटा वापस क्यों नहीं कर रहा था, भले ही कैश-कंट्रोल हेडर सर्वर द्वारा सही ढंग से सेट किए जा रहे हों। इस निरीक्षण को सही करने में मदद के लिए धन्यवाद, यह मुझे पागल कर रहा था। –

+0

मैंने इसे ट्रैक करने की कोशिश करने में इतनी देर बिताई। धन्यवाद! –

3

मैंने अभी इसका परीक्षण किया है और आपका कोड ठीक काम करता है, एक लापता कॉमा को छोड़कर।

ओपन नेटवर्क टैब और फिर इस पृष्ठ पर कंसोल में इस प्रयास करें:

$.ajax('http://stackoverflow.com/', { 
    type: 'get', 
    dataType: 'json', 
    cache: true, 
    headers: { 
     'Cache-Control': 'max-age=123' 
    } 
}) 

चेक नेटवर्क टैब को फिर से, अनुरोध आपके द्वारा अभी किए क्लिक करें, और "हेडर" टैब पर क्लिक करें। आप देखेंगे कि अनुरोध आपके द्वारा प्रदत्त Cache-Control हेडर के साथ भेजा गया था।

+0

हाँ, क्षमा करें। यह मेरी अपनी गलती थी। मुझे यह सुनिश्चित करने के लिए डेवलपर टूल की जांच करनी चाहिए कि मेरे पास कैशिंग अक्षम नहीं है। – HaxElit

संबंधित मुद्दे