2012-10-11 41 views
8

मुझे आश्चर्य है कि स्थानीय कैश से प्रतिक्रिया कब वापस आती है इसका पता लगाने का तरीका है? क्या यह संभव है?एक्सएचआर कैश्ड संसाधन कब देता है इसका पता लगाने के लिए कैसे?

समाधान सामान्य होना चाहिए और बिना शर्त अनुरोधों के लिए काम करना चाहिए। इस मामले में, प्रतिक्रिया कोड हमेशा 200 ठीक है, लेकिन एक्सएचआर दूसरे अनुरोध के लिए एक कैश संसाधन लौटाता है (उदाहरण के लिए पहली प्रतिक्रिया में हेडर का समय समाप्त होता है, इसलिए समाप्ति तिथि से पहले किसी नए संसाधन के लिए सर्वर से पूछने की आवश्यकता नहीं है)।

+0

संभव नहीं लगती। प्रतिक्रिया के लिए एक टाइमस्टैम्प जोड़ने के बारे में कैसे? –

+0

मुझे नहीं पता, लेकिन क्रोम डेवलपर टूल्स जानकारी दिखाने में सक्षम है; (नेटवर्क फलक, आकार कॉलम - कैश से) तो मुझे आश्चर्य है कि वे इसे कैसे करते हैं;) (एफएफ के लिए फायरबग, प्रतिक्रिया हेडर: कैश से) – filip26

उत्तर

5

जवाब है तिथि हैडर

  • तारीख हैडर से पहले तो तारीख भेज रहा है, तो एक प्रतिक्रिया एक कैश से आ रही है।
  • यदि दिनांक शीर्षलेख दिनांक के बाद दिनांक भेजा गया है तो एक प्रतिक्रिया ताजा है।

उदा।

    कैश से
  • : अनुरोध 11:00 पर भेजा गया था, प्रतिक्रिया की तारीख 10:59
  • कोई कैश है: अनुरोध 11:00 पर भेजा गया था, प्रतिक्रिया की तारीख 11:01
+0

यह निश्चित रूप से केवल क्रोम एक्सटेंशन में काम करता है। –

+0

@RichBradshaw मुझे अंततः सामान्य समाधान मिला। जवाब अपडेट किया गया है। – filip26

0

यह देखने के लिए जांचें कि क्या स्थिति कोड लौटा है 304 (संशोधित नहीं) onreadystatechange फ़ंक्शन में है। की तर्ज पर कुछ:

xmlhttp.onreadystatechange=function() 
{ 
    if (xmlhttp.readyState==4 && xmlhttp.status==304) 
    { 
     alert("Cached"); 
    } 
} 
+0

धन्यवाद @ kmb385, लेकिन यह समाधान सशर्त अनुरोध के मामले में काम करता है (यदि - *, उदाहरण के लिए यदि संशोधित-से-अगर, कोई नहीं-मैच) और मैं सामान्य समाधान की तलाश में हूं। सवाल अद्यतन किया गया है। – filip26

1

जाहिर है यह निर्धारित करने के लिए कि ब्राउज़र कैश से कुछ सेवा दी गई थी, हम Resource Timing API का भी उपयोग कर सकते हैं; यदि ट्रांसफर आकार 0 है (और एन्कोडेड बॉडीसाइज> 0 है) तो यह एक कैश हिट है।

यह दूसरों की तुलना में बेहतर समाधान की तरह लगता है, जब तक आप a browser that supports it से निपट रहे हैं।

रेफरी: https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/transferSize