मैं jQuery कैश पर jQuery में AJAX कॉल से लौटाए गए JSON डेटा को पकड़ने का प्रयास कर रहा हूं।ब्राउज़र पहले से ही अपने कैश का उपयोग पहले AJAX कॉल से नहीं कर सकता?
सामान्य ब्राउज़र गतिविधि ब्राउज़र कैश पर हर समय निर्भर करती है। उदाहरण: jpg और gif छवियों को पृष्ठ रीलोड पर रीफ्रेट नहीं किया गया है।
लेकिन जब मैं jQuery getJSON AJAX कॉल का उपयोग करने का प्रयास करता हूं, तो मैं सर्वर से डेटा लाने से बचने के लिए प्रतीत नहीं कर सकता।
मेरे वापस आए हेडर (फ़ायरबग के साथ पुष्टि की) इस तरह दिखेगा:
Transfer-Encoding: chunked
Date: Wed, 05 Aug 2009 02:55:39 GMT
Content-Type: text/plain; charset=ISO-8859-1
Expires: Wed, 05 Aug 2009 03:55:39 GMT
Cache-Control: max-age=3600
फिर भी पेज के लिए एक तत्काल ताज़ा सर्वर हिट करने के लिए समान अनुरोधों का कारण बनता है।
मैंने कैशिंग व्यवहार से परहेज करने के बारे में कई पोस्टिंग देखी हैं, जो मुझे चाहिए। मैंने कैशिंग का उपयोग करने के बारे में कई पोस्टिंग देखी हैं, लेकिन उन सभी को DOM में डेटा सहेजने पर पर भरोसा है। मुझे ऐसा कुछ चाहिए जो एक पृष्ठ रीलोड के दौरान कैश की गई छवियों की तरह व्यवहार करता हो।
ब्राउज़र को बस इसे अपने स्वयं के कैश से लाएं?
--x - एक्स - एक्स - एक्स अद्यतन --x - एक्स - एक्स-
मेरी निराशा करने के लिए बहुत, कई सम्मानजनक लोगों का मानना है कि यह सिर्फ संभव नहीं है। कुछ लोग यह भी तर्क देते हैं कि यह नहीं होना चाहिए (जो अभी भी मुझे परेशान करता है)।
Stubburn एक गलती करने के लिए, मैं निम्नलिखित की कोशिश की:
मैं बाहर जाने वाले सभी पृष्ठों मैं कैश हो जाने की (मैं कुछ पसंद यूआरएल तर्क है कि डेटा मैं का अनुरोध कर रहा हूँ प्रतिनिधित्व लेने चाहते हैं पर ETag शीर्षलेख सेट और बस इटाग वैल्यू के लिए इसका इस्तेमाल करें)
अगले अनुरोध की शुरुआत में, मैं बस जांचता हूं कि 'अगर-नो-मैच' हेडर अनुरोध में है या नहीं। यदि ऐसा है, तो ब्राउज़र अनुरोध जैसा कैश नहीं कर रहा है, इसलिए मैंने 304 संशोधित प्रतिक्रिया भेजी नहीं।
परीक्षण से पता चलता है कि फ़ायरफ़ॉक्स मेरे अनुरोध कैश नहीं होगा (लेकिन मैं अभी भी बच सकते हैं मेरी cgi का हिस्सा 'महंगा डेटा लाने'), जबकि IE6 वास्तव में यह (कैश होगा और अभ्यस्त भी से वापस प्राप्त करने में कठिनाई का प्रयास सर्वर)।
यह एक सुंदर जवाब नहीं है, लेकिन यह अब मेरे लिए काम कर रहा है
(ग्राफ डेटा के उन पेस्टी पूर्ण-पृष्ठ रीफ्रेश अब बहुत धीमे या महंगा नहीं होंगे)।
(क्या? मैं IE6 चल रहा हूँ! OMG! ओह एक गिलहरी देखो!)
शायद मैं उपयोग करने की आवश्यकता यदि संशोधित के बाद से अनुरोध HTTP 304 स्थिति कोड के लिए इन कन्वर्ट करने के लिए? – ericslaw
डर्न, यहां तक कि 'अगर-संशोधित-से-बाद' हेडर को अनुरोध में भेजा जा रहा है ... 304 दृष्टिकोण – ericslaw
के लिए बहुत कुछ मुझे प्रारंभिक अनुरोध पर एटाग सेट करने और 304 लौटने पर कुछ भाग्य था यदि 'अगर-कोई-मैच' शीर्षलेख मौजूद नहीं है बाद में अनुरोध – ericslaw