आपके आखिरी सवाल के लिए, क्यों? मैं जो जानता हूं, उसके साथ समझाने की कोशिश करूंगा
आम आदमी की शर्तों में उन तीन स्थिति कोडों का संक्षिप्त विवरण।
- 200 - सफलता (ब्राउज़र अनुरोध और सर्वर से फ़ाइल प्राप्त करें)
यदि कैशिंग सर्वर में सक्षम है
- 200 (मेमोरी कैश से) - फ़ाइल ब्राउज़र में मिली, इसलिए ब्राउज़र सर्वर से अनुरोध नहीं कर रहा है
- 304 - ब्राउज़र एक फ़ाइल का अनुरोध करता है लेकिन इसे सर्वर द्वारा अस्वीकार कर दिया जाता है
कुछ फ़ाइलों के लिए ब्राउज़र सर्वर से अनुरोध करने का निर्णय ले रहा है और कुछ के लिए यह संग्रहीत (कैश्ड) फाइलों से पढ़ना तय कर रहा है। ऐसा क्यों है ? हर फाइल की एक्सपायरी डेट होती है, इसलिए
यदि कोई फ़ाइल समाप्त नहीं हुई है तो ब्राउज़र कैश (200 कैश) से उपयोग करेगा।
यदि फ़ाइल समाप्त हो गई है, तो ब्राउज़र एक फ़ाइल के लिए सर्वर का अनुरोध करता है। सर्वर दोनों स्थानों (ब्राउज़र और सर्वर) में फ़ाइल की जाँच करें। यदि समान फ़ाइल मिली, तो सर्वर अनुरोध को अस्वीकार कर देता है। प्रोटोकॉल के अनुसार ब्राउज़र मौजूदा फ़ाइल का उपयोग करता है।
इस nginx कॉन्फ़िगरेशन को देखें
location / {
add_header Cache-Control must-revalidate;
expires 60;
etag on;
...
}
यहां समाप्ति 60 सेकंड के लिए सेट है, इसलिए सभी स्थिर फ़ाइलों को 60 सेकंड के लिए कैश किया गया है। इसलिए यदि आप 60 सेकंड के भीतर फिर से फ़ाइल का अनुरोध करते हैं तो ब्राउज़र मेमोरी (200 मेमोरी) से पढ़ेगा। यदि 60 सेकंड के बाद यू अनुरोध सर्वर (304) का अनुरोध करेगा।
मैंने मान लिया कि फ़ाइल 60 सेकंड के बाद नहीं बदली जाती है, उस स्थिति में आपको 200 मिलेगा (यानी, अपडेट की गई फ़ाइल सर्वर से प्राप्त होगी)।
इसलिए, यदि सर्वरों को अलग-अलग एक्सपायरिंग और कैशिंग हेडर (नीतियों) के साथ कॉन्फ़िगर किया गया है, तो स्थिति भिन्न हो सकती है।
आपके मामले में आप सीडीएन का उपयोग कर रहे हैं, सीडीएन का मुख्य उद्देश्य उच्च उपलब्धता और तेजी से वितरण है। इसलिए वे कई सर्वरों का उपयोग करते हैं। भले ही ऐसा लगता है कि फाइलें एक ही डायरेक्टरी में हैं, cdn यू कंटेंट प्रदान करने के लिए कई सर्वरों का उपयोग कर सकता है, यदि उन सर्वरों में अलग-अलग कॉन्फ़िगरेशन हैं। तब ये स्थिति बदल सकती है। आशा करता हूँ की ये काम करेगा।