कैश-कंट्रोल में क्या अंतर है: अधिकतम आयु = 0 और नो-कैश?


641

हेडर का Cache-Control: max-age=0तात्पर्य है कि सामग्री को बासी माना जाता है (और फिर से प्राप्त किया जाना चाहिए), जो वास्तव में उसी चीज के रूप में है Cache-Control: no-cache


जवाबों:


596

मेरे पास यही सवाल था, और मेरी खोजों में कुछ जानकारी मिली (आपका प्रश्न परिणामों में से एक के रूप में सामने आया)। यहाँ मैंने निर्धारित किया है ...

Cache-Controlहेडर के दो पहलू हैं । एक पक्ष वह है जहां इसे वेब सर्वर (उर्फ "मूल सर्वर") द्वारा भेजा जा सकता है। दूसरा पक्ष वह है जहां इसे ब्राउज़र (उर्फ "उपयोगकर्ता एजेंट") द्वारा भेजा जा सकता है।


जब मूल सर्वर द्वारा भेजा जाता है

मेरा मानना है कि max-age=0बस कैश (और उपयोगकर्ता एजेंट) बताता प्रतिक्रिया से बासी है get-जाने के लिए और इसलिए वे चाहिए प्रतिक्रिया को दोबारा सत्यापित (जैसे। साथ If-Not-Modifiedहेडर) एक कैश्ड प्रति उपयोग करने से पहले, जबकि, no-cacheउन्हें बताता है कि वे चाहिए एक कैश्ड उपयोग करने से पहले दोबारा सत्यापित कॉपी। से 14.9.1 क्या संचित करने योग्य है :

कोई कैश

... एक कैश मूल सर्वर के साथ सफल पुन: सत्यापन के बिना एक बाद के अनुरोध को पूरा करने के लिए प्रतिक्रिया का उपयोग नहीं करना चाहिए। यह एक मूल सर्वर को कैशे से भी कैशिंग को रोकने की अनुमति देता है जिसे क्लाइंट अनुरोधों के लिए बासी प्रतिक्रियाओं को वापस करने के लिए कॉन्फ़िगर किया गया है।

दूसरे शब्दों में, कैश कभी-कभी एक बासी प्रतिक्रिया का उपयोग करने के लिए चुन सकते हैं (हालांकि मेरा मानना ​​है कि उन्हें तब एक Warningहेडर जोड़ना होगा ), लेकिन no-cacheकहते हैं कि उन्हें बासी प्रतिक्रिया का उपयोग करने की अनुमति नहीं है, चाहे कुछ भी हो। हो सकता है आप चाहते हैं चाहिए -revalidate व्यवहार जब बेसबॉल आँकड़े एक पेज में उत्पन्न कर रहे हैं, लेकिन आप चाहते हैं MUST -revalidate व्यवहार है जब आप किसी ई-कॉमर्स खरीद के जवाब तैयार किया है।

हालाँकि आप अपनी टिप्पणी में सही हैं जब आप कहते हैं कि no-cacheभंडारण को रोकने के लिए नहीं है, तो उपयोग करते समय यह वास्तव में एक और अंतर हो सकता है no-cache। मैं एक पृष्ठ भर में आया, कैश कंट्रोल के निर्देश डिमिस्टिफाई हुए , जो कहता है (मैं इसकी शुद्धता के लिए व्रत नहीं कर सकता):

व्यवहार में, IE और फ़ायरफ़ॉक्स ने नो-कैश निर्देश का इलाज करना शुरू कर दिया है जैसे कि यह ब्राउज़र को पृष्ठ को कैश नहीं करने का निर्देश देता है। हमने लगभग एक साल पहले इस व्यवहार को देखना शुरू किया। हमें संदेह है कि कैशिंग को रोकने के लिए इस निर्देश के व्यापक (और गलत) उपयोग से यह परिवर्तन हुआ।

...

ध्यान दें कि देर से, "कैश-कंट्रोल: नो-कैश" ने भी "नो-स्टोर" निर्देश की तरह व्यवहार करना शुरू कर दिया है।

एक तरफ के रूप में, यह मुझे प्रतीत होता है कि Cache-Control: max-age=0, must-revalidateमूल रूप से एक ही चीज का मतलब होना चाहिए Cache-Control: no-cache। तो हो सकता है कि MUST -revalidate व्यवहार प्राप्त करने का एक तरीका है no-cache, जबकि no-cacheएक ही काम करने के स्पष्ट प्रवास से बचना no-store(जैसे? कोई कैशिंग नहीं है)?


जब उपयोगकर्ता एजेंट द्वारा भेजा जाता है

मेरा मानना ​​है कि shahkalpesh का उत्तर उपयोगकर्ता एजेंट पक्ष पर लागू होता है। आप 13.2.6 को देख कर कई जवाबों को अस्वीकार कर सकते हैं ।

यदि कोई उपयोगकर्ता एजेंट Cache-Control: max-age=0(aka। "एंड-टू-एंड रिवाइडलेशन") के साथ एक अनुरोध भेजता है , तो रास्ते में प्रत्येक कैश इसकी कैश प्रविष्टि (जैसे If-Not-Modifiedहेडर के साथ ) मूल सर्वर के लिए सभी तरह से अमान्य होगा । यदि उत्तर है तो 304 (संशोधित नहीं) है, कैश्ड इकाई का उपयोग किया जा सकता है।

दूसरी ओर, Cache-Control: no-cache(उर्फ "एंड-टू-एंड रीलोड" के साथ एक अनुरोध भेजना ) अमान्य नहीं होता है और जवाब देते समय सर्वर कैश्ड कॉपी का उपयोग नहीं करता है


9
क्या कैश-नियंत्रण नहीं होगा: अधिकतम-आयु = 0, अवश्य-पुन: अमान्य, छद्म-पुनर्वितरण, नो-कैश का सटीक समतुल्य होगा?
डिडियर ए।

1
महान जवाब, मैं आपके द्वारा लेख को पढ़ने गया, लेकिन पेज अब मान्य नहीं है। palisade.plynt.com/issues/2008Jul/cache-control-attributes
क्रेग लंदन

7
धन्यवाद, @CraigLondon मैंने इसे एक कैश्ड संस्करण पर पुनर्निर्देशित किया।
माइकल क्रेब्स

2
must-revalidateके रूप में ही उपलब्ध कराना नहीं है no-cacheया no-store। बाद वाला बाईपास पूरी तरह से बंद हो जाता है, लेकिन पूर्व का कहना है कि कैश को हमेशा ताजगी के लिए जांचना चाहिए, लेकिन अगर यह अभी भी चालू है, तो इसका उपयोग किया जा सकता है, इसलिए बैंडविड्थ की बचत। उत्तरार्द्ध पूरी तरह से अंत-समय पर हर समय डाउनलोड करता है, अनावश्यक बैंडविड्थ और देरी से प्रतिक्रियाएं लेता है।
पतंजलि

3
@ पतंजलि "कैश को पूरी तरह से बायपास no-cache नहीं करती है " या "हर समय पूर्ण अंत-टू-एंड डाउनलोड को मजबूर करती है", कम से कम सभी ब्राउज़रों में नहीं। विनिर्देश केवल यह कहता है कि ब्राउज़र को कैश को मान्य करना चाहिए।
फ्रेंकलिन यू

57

अधिकतम उम्र = 0

यह ताज़ा करने के लिए क्लिक करने के बराबर है , जिसका अर्थ है, मुझे नवीनतम प्रतिलिपि दें जब तक कि मेरे पास पहले से नवीनतम प्रतिलिपि न हो।

कोई कैश

यह रीफ़्रेश करते समय Shift पकड़ रहा है , जिसका अर्थ है, बस फिर से सब कुछ फिर से करें चाहे जो भी हो।


31
यह गलत है। शिफ्ट-रिफ्रेश एक कठिन रिफ्रेश है जो कि अधिक समान हैno-store
माइकल

3
फ़ायरफ़ॉक्स 45.0 में सत्यापित, जो कि क्रोम 49.0.2623.87 मीटर की तरह, शिफ्ट + रीफ़्रेशिंग होने पर "प्रागमा: नो-कैश" भी भेजता है।
सीस टिमरमैन

34

पुराना सवाल अब, लेकिन अगर किसी और ने मुझे खोज के माध्यम से इसे पार किया, तो ऐसा प्रतीत होता है कि IE9 बैक और फॉरवर्ड बटन का उपयोग करते समय संसाधनों के व्यवहार को कॉन्फ़िगर करने के लिए इसका उपयोग कर रहा है। जब अधिकतम-आयु = 0 का उपयोग किया जाता है, तो ब्राउज़र पिछले संस्करण का उपयोग करेगा जब एक बैकवर्ड / फॉरवर्ड प्रेस पर एक संसाधन को देखा जाएगा। यदि नो-कैश का उपयोग नहीं किया जाता है, तो संसाधन को फिर से भेज दिया जाएगा।

IE9 कैशिंग के बारे में अधिक जानकारी इस msdn कैशिंग ब्लॉग पोस्ट पर देखी जा सकती है ।


4
इसी तरह, IE 8 सभी प्रकार के "डाउनलोड नहीं कर सका" मुद्दों पर है जब कोई कैश- https पर उपयोग नहीं किया जाता है। सुझाए गए प्रस्तावों में कभी-कभी हेडर को अधिकतम आयु = 0
रॉबर्ट क्राइस्ट

28

IE8 और फ़ायरफ़ॉक्स 3.5 के साथ मेरे हालिया परीक्षणों में, ऐसा लगता है कि दोनों आरएफसी-अनुरूप हैं। हालांकि, वे मूल सर्वर के लिए उनकी "मित्रता" में भिन्न हैं। IE8 no-cacheउसी शब्दार्थ के साथ प्रतिक्रियाओं का व्यवहार करता है max-age=0,must-revalidate। हालाँकि, फ़ायरफ़ॉक्स 3.5, के no-cacheबराबर माना जाता है no-store, जो प्रदर्शन और बैंडविड्थ उपयोग के लिए बेकार है।

स्क्वीड कैश, डिफ़ॉल्ट रूप से, no-cacheफ़ायरफ़ॉक्स की तरह हेडर के साथ कभी भी स्टोर नहीं करता है ।

मेरी सलाह है कि public,max-age=0आप गैर-संवेदनशील संसाधनों के लिए सेट करें जिन्हें आप हर अनुरोध पर नए सिरे से जांचना चाहते हैं, लेकिन फिर भी कैशिंग के प्रदर्शन और बैंडविड्थ लाभ की अनुमति देते हैं। समान विचार वाले प्रति उपयोगकर्ता आइटम के लिए, उपयोग करें private,max-age=0

मैं no-cacheपूरी तरह से इसके इस्तेमाल से बचूंगा, क्योंकि ऐसा लगता है कि इसे कुछ ब्राउज़र और लोकप्रिय कैश द्वारा कार्यात्मक समकक्ष के रूप में प्रस्तुत किया गया है no-store

इसके अतिरिक्त, अकामाई और लाइमलाइट का अनुकरण न करें। जबकि वे अनिवार्य रूप से अपने प्राथमिक व्यवसाय के रूप में बड़े पैमाने पर कैशिंग सरणियों को चलाते हैं, और विशेषज्ञ होने चाहिए, उनके पास वास्तव में एक निहित स्वार्थ होता है जिससे उनके नेटवर्क से अधिक डेटा डाउनलोड किया जा सके। Google इम्यूलेशन के लिए एक अच्छा विकल्प नहीं हो सकता है, या तो। वे संसाधन के आधार पर उपयोग max-age=0या no-cacheबेतरतीब ढंग से करने लगते हैं ।


2
पासवर्ड संरक्षित सामग्री के लिए सर्वश्रेष्ठ उत्तर। private,max-age=0
दाना

21
अधिकतम उम्र
    जब एक मध्यवर्ती कैश को अधिकतम-आयु = 0 निर्देश के माध्यम से, अमान्य करने के लिए मजबूर किया जाता है 
अपने स्वयं के कैश प्रविष्टि, और ग्राहक ने अनुरोध में अपने स्वयं के सत्यापनकर्ता की आपूर्ति की है, 
आपूर्ति किए गए सत्यापनकर्ता वर्तमान में कैश प्रविष्टि के साथ संग्रहीत सत्यापनकर्ता से भिन्न हो सकते हैं। 
इस स्थिति में, कैश MAY या तो सत्यापनकर्ता का उपयोग बिना अपना अनुरोध करने के लिए करता है 
अर्थ पारदर्शिता को प्रभावित करना। 

    हालाँकि, सत्यापनकर्ता की पसंद प्रदर्शन को प्रभावित कर सकती है। के लिए सबसे अच्छा तरीका है
मध्यवर्ती कैश अपने अनुरोध करते समय अपने स्वयं के सत्यापनकर्ता का उपयोग करने के लिए। अगर सर्वर जवाब देता है
304 (संशोधित नहीं) के साथ, फिर कैश क्लाइंट को अपनी अब सत्यापित प्रति वापस कर सकता है 
200 (ओके) प्रतिक्रिया के साथ। यदि सर्वर एक नई इकाई और कैश सत्यापनकर्ता के साथ उत्तर देता है,
हालाँकि, मध्यवर्ती कैश लौटे सत्यापनकर्ता की तुलना में प्रदान किए गए के साथ तुलना कर सकता है 
ग्राहक के अनुरोध, मजबूत तुलना समारोह का उपयोग कर। यदि ग्राहक का सत्यापनकर्ता है
मूल सर्वर के बराबर है, तो मध्यवर्ती कैश केवल 304 (नहीं) देता है 
संशोधित)। अन्यथा, यह 200 (OK) प्रतिक्रिया के साथ नई इकाई देता है।

    यदि अनुरोध में नो-कैश निर्देश शामिल है, तो इसमें मिन-फ्रेश शामिल नहीं होगा, 
अधिकतम-बासी, या अधिकतम-आयु। 

सौजन्य: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.4

इसे उत्तर के रूप में स्वीकार न करें - मुझे इसका सही उपयोग समझने के लिए इसे पढ़ना होगा :)


12

मैं मुश्किल से एक कैशिंग विशेषज्ञ हूं, लेकिन मार्क नॉटिंघम है। यहां उनके कैशिंग डॉक्स हैं । संदर्भ अनुभाग में उनके उत्कृष्ट संबंध भी हैं।

उन डॉक्स के मेरे पढ़ने के आधार पर, ऐसा लगता है max-age=0कि कैश को "उसी समय" में आए अनुरोधों पर कैश्ड प्रतिक्रिया भेजने की अनुमति दे सकती है , जहां "एक ही समय" का अर्थ है कि वे एक साथ पर्याप्त रूप से कैश में एक साथ दिखते हैं, लेकिन no-cacheनहीं ।


अच्छी बात है, लेकिन वास्तव में क्या कोई ब्राउज़र वास्तव में ऐसा करता है?
पचेरियर

3
@ स्पेसर मुझे लगता है कि यह वार्निश, स्क्वीड, ट्रैफ़िक आदि जैसे प्रॉक्सी सर्वरों को कैच करने के लिए अधिक है
हांक गे

12

वैसे, यह ध्यान देने योग्य है कि कुछ मोबाइल डिवाइस, विशेष रूप से iPhone / iPad जैसे Apple उत्पाद पूरी तरह से हेडर को अनदेखा करते हैं जैसे कि नो-कैश, नो-स्टोर, एक्सपायर: 0, या जो कुछ भी आप उन्हें फिर से उपयोग न करने के लिए मजबूर करने की कोशिश कर सकते हैं। पेज बनाते हैं।

इसने हमें सिरदर्द का कोई अंत नहीं दिया है क्योंकि हम एक उपयोगकर्ता के iPad के मुद्दे को कहने की कोशिश करते हैं, एक पृष्ठ पर सोए जा रहे हैं जो वे एक फार्म प्रक्रिया के माध्यम से पहुंच गए हैं, चरण 2 से 3 कहते हैं, और फिर डिवाइस पूरी तरह से स्टोर को अनदेखा करता है / कैश निर्देश, और जहां तक ​​मैं बता सकता हूं, बस अपने अंतिम स्थिति से पृष्ठ का एक आभासी स्नैपशॉट लेता है, अर्थात, यह स्पष्ट रूप से बताई गई बातों को अनदेखा कर रहा है, और केवल यही नहीं, एक पृष्ठ लेना जो संग्रहीत नहीं किया जाना चाहिए। , और वास्तव में इसे फिर से जाँच किए बिना इसे संग्रहीत करना, जो सभी प्रकार के अजीब सत्र मुद्दों की ओर जाता है, अन्य बातों के अलावा।

मैं सिर्फ यह जोड़ रहा हूं कि कोई व्यक्ति साथ आता है और यह पता नहीं लगा सकता है कि उन्हें विशेष रूप से आईफ़ोन और आईपैड के साथ सत्र की त्रुटियां क्यों हो रही हैं, जो इस क्षेत्र के सबसे खराब अपराधी हैं।

मैंने इस मुद्दे के साथ काफी व्यापक डिबगर परीक्षण किया है, और यह मेरा निष्कर्ष है, डिवाइस इन निर्देशों को पूरी तरह से अनदेखा करते हैं।

यहां तक ​​कि नियमित उपयोग में, मैंने पाया है कि कुछ मोबाइल भी पूरी तरह से नए संस्करणों के लिए कहने के लिए जाँच करने में विफल रहते हैं, समय सीमा समाप्त हो रही है: 0 तो अंतिम संशोधित तारीखों की जाँच करने के लिए कि क्या इसे नया मिलना चाहिए।

यह बस नहीं होता है, इसलिए मुझे जो करने के लिए मजबूर किया गया था, उसमें सीएसएस / जेएस फाइलों में क्वेरी स्ट्रिंग्स को जोड़ने के लिए मुझे अपडेट को मजबूर करने की आवश्यकता थी, जो बेवकूफ मोबाइल उपकरणों को यह सोचने में चकरा देता है कि यह एक फाइल नहीं है, जैसे: मेरी .css? v = 1, फिर v = 2 के लिए css / js अपडेट। यह काफी हद तक काम करता है।

उपयोगकर्ता के ब्राउज़र, वैसे भी, अगर उनकी चूक के लिए छोड़ दिया जाए, तो 2016 तक, जैसा कि मुझे लगातार पता चलता है (हम अपनी साइट पर बहुत सारे बदलाव और अपडेट करते हैं) भी ऐसी फ़ाइलों पर अंतिम संशोधित तारीखों की जांच करने में विफल रहते हैं, लेकिन क्वेरी स्ट्रिंग विधि उस समस्या को हल करता है। यह कुछ ऐसा है जो मैंने ग्राहकों और कार्यालय के लोगों के साथ देखा है, जो अपने ब्राउज़र पर बुनियादी सामान्य उपयोगकर्ता चूक का उपयोग करते हैं, और सीएसएस / जेएस आदि के साथ कैशिंग मुद्दों के बारे में कोई जागरूकता नहीं है, परिवर्तन पर नई सीएसएस / जेएस प्राप्त करने में लगभग असफल हैं। जिसका अर्थ है कि उनके ब्राउज़रों के लिए चूक, ज्यादातर MSIE / फ़ायरफ़ॉक्स वे नहीं कर रहे हैं जो उन्हें करने के लिए कहा जाता है, वे परिवर्तनों को अनदेखा करते हैं और अंतिम संशोधित तिथियों को अनदेखा करते हैं और यहां तक ​​कि समाप्ति की पुष्टि नहीं करते हैं: 0 स्पष्ट रूप से सेट करें।

यह अच्छी तकनीकी जानकारी के साथ एक अच्छा धागा था, लेकिन यह भी ध्यान रखना महत्वपूर्ण है कि विशेष रूप से मोबाइल उपकरणों में इस सामान का समर्थन कितना बुरा है। हर कुछ महीनों में मुझे उनकी विफलता के खिलाफ सुरक्षा की अधिक परतों को जोड़ना होगा, जो उन्हें प्राप्त होने वाले हेडर आदेशों का पालन करने के लिए, या उन आदेशों को ठीक से समझने के लिए।


css और js कैशिंग के लिए उपयुक्त उम्मीदवार हैं, जैसा कि उत्पादन प्रणालियों में होता है, उन्हें वास्तव में अक्सर बदलना नहीं चाहिए। हालांकि, विकसित करते समय उनके लिए कैशिंग करना एक दर्द है, क्योंकि उस गतिविधि के लिए लगातार मजबूर कैश-फ्लश की आवश्यकता हो सकती है। लेकिन, यदि कोई अलग-अलग वातावरण के लिए अलग-अलग सेटिंग्स का उपयोग नहीं कर सकता है, तो उत्पादन आवश्यकताओं को पहले से ही लेना चाहिए, क्योंकि इसका सबसे अधिक प्रभाव पड़ता है, क्योंकि बड़ी संख्या में पहुंच बैंडविड्थ को बचाएगी, कुछ Ctrl-F5 रिफ्रेशर्स की तुलना में, जो कुछ डेवलपर्स के पास होंगे करने के लिए। हालाँकि, वास्तविक समय के डेटा को क्वेरी करने के लिए आवश्यक है कि कैश-कंट्रोल ठीक से काम करे।
पतंजलि

0

एक चीज जो (आश्चर्यजनक रूप से) उल्लेखित नहीं की गई है, वह यह है कि अनुरोध स्पष्ट रूप से यह संकेत दे सकता है कि यह max-staleनिर्देश का उपयोग करते हुए, बासी डेटा को स्वीकार करेगा । उस स्थिति में, यदि सर्वर ने जवाब दिया max-age=0, तो कैश केवल प्रतिक्रिया बासी पर विचार करेगा, और ग्राहक के अनुरोध को संतुष्ट करने के लिए इसका उपयोग करने के लिए स्वतंत्र होगा [जो संभावित-बासी डेटा के लिए कहा था]। इसके विपरीत, अगर सर्वर भेजता है no-cacheकि वास्तव में ग्राहक द्वारा (के साथ max-stale) बासी डेटा के लिए किसी भी अनुरोध को ट्रम्प करता है , क्योंकि कैश को पुनर्जीवित करना चाहिए।


-2

अंतर यह है कि नो-कैश (फ़ायरफ़ॉक्स पर कोई स्टोर नहीं) किसी भी तरह के कैशिंग को रोकता है। डिस्क पर लिखी जा रही सुरक्षित सामग्री वाले पृष्ठों को रोकने के लिए यह उपयोगी हो सकता है और उन पृष्ठों के लिए जिन्हें हमेशा अपडेट किया जाना चाहिए, भले ही वे बैक बटन के साथ फिर से आए हों।

अधिकतम आयु = 0 इंगित करता है कि कैश प्रविष्टि बासी है और इसे पुन: सत्यापन की आवश्यकता है, लेकिन कैशिंग को नहीं रोकता है। अक्सर ब्राउज़र केवल एक बार ब्राउज़र सत्र के अनुसार संसाधनों को मान्य करते हैं, इसलिए सामग्री को तब तक अपडेट नहीं किया जा सकता है जब तक कि साइट नए सत्र में नहीं देखी जाती है।

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


9
जहाँ तक मैं समझता हूँ, 'नो-कैश' स्टोरेज को रोकने के लिए नहीं है ('नो-स्टोर' इसे प्राप्त करने का उचित तरीका है)। क्या कुछ ब्राउज़र 'नो-कैश' की व्याख्या 'नो-स्टोर' के रूप में करते हैं? यही कारण है कि 'अधिकतम-आयु = 0' का उपयोग केवल 'नो-कैश' के एवज में किया जाता है
rubyruy

3
ये गलत है। ऊपर देखो। कुछ ब्राउज़र / सर्वर नो-कैश को नो-स्टोर के रूप में लागू करने का विकल्प चुन सकते हैं , लेकिन सभी नहीं।
जेरेमी कॉफ़मैन

4
इसका उपयोग करने का एकमात्र सुरक्षित तरीका यह max-age=0है कि यदि आपका मतलब है कि कैशिंग की अनुमति है, लेकिन संसाधन को अमान्य किया जाना चाहिए और no-storeयदि आप नहीं चाहते हैं कि प्रतिक्रिया कैश में संग्रहीत की जाए। no-cacheबेतरतीब ढंग से इन उपयोगकर्ता एजेंट विक्रेता और संस्करण संख्या और ट्रांसफर प्रोटोकॉल के आधार पर दोनों में से किसी मतलब करने के लिए नामित किया गया है।
बजे मिको रांटलैनेन

फ़ायरफ़ॉक्स नो-स्टोर का उपयोग कब करता है?
सेस टिमरमैन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.