Nginx प्रॉक्सी_कोचे_पाथ निर्देश को समझना


30

मान लीजिए कि मेरे पास यह nginx config फाइल है

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=myCache:8m max_size=100m inactive=1h;
  • क्या keys_zone=myCache:8mमतलब है? डॉक्स में इसके बारे में बहुत कुछ नहीं कहा गया है:

इसके अलावा, डेटा के बारे में सभी सक्रिय कुंजी और जानकारी एक साझा मेमोरी ज़ोन में संग्रहीत की जाती है, जिसका नाम और आकार keys_zone पैरामीटर द्वारा कॉन्फ़िगर किया गया है।

  • क्या होगा यदि proxy_cache_valid( 12h) निर्दिष्ट inactiveमूल्य से अधिक है ( 1h) में proxy_cache_path? यह किस नियम का पालन करेगा? जैसे

    proxy_cache_valid 200 302 12h;
    proxy_cache_valid 404 302 1h;
    

धन्यवाद!

जवाबों:


39

Key_zone = myCache: 8m का क्या अर्थ है?

के रूप में प्रलेखन कहा , nginx रखेंगे के बारे में डेटा जमा हो जाती है सभी सक्रिय कुंजी और जानकारी एक साझा स्मृति क्षेत्र, जिसका में nameऔर sizekeys_zone पैरामीटर द्वारा कॉन्फ़िगर किए गए हैं। पूर्णता के रूप में, प्रति भाग को तोड़ने की सुविधा देता है

  • /var/cache/nginxवह स्थान है जहां वास्तविक कैश संग्रहीत किया जाता है। फ़ोल्डर के अंदर, कैश फ़ाइल बाइनरी फ़ाइल थी लेकिन आप आसानी से इसके अंदर HTML टैग को देख सकते हैं।
  • levels=1:2 स्तर पैरामीटर कैश में उपनिर्देशिका स्तर की संख्या निर्धारित करता है।
  • keys_zone=myCache:8mअधिकतम आकार 8 एमबी के साथ myCache नामक साझा मेमोरी ज़ोन को परिभाषित कर रहा था। यह कैश की सभी सक्रिय कुंजी और मेटाडेटा रखता है । इसलिए, जब भी nginx जाँचता है कि अगर कोई पृष्ठ कैश किया गया था, तो यह साझा मेमोरी ज़ोन को पहले सुरक्षित करता है, फिर /var/cache/nginxकैश मौजूद होने पर वास्तविक कैश के स्थान की तलाश करें ।
  • max_sizeकैश का अधिकतम आकार था जैसे फ़ाइलों का आकार /var/cache/nginx
  • inactive=1hनिर्दिष्ट अधिकतम निष्क्रिय समय कैश संग्रहीत किया जा सकता है। कैश्ड डेटा जो inactiveपैरामीटर द्वारा निर्दिष्ट समय के दौरान एक्सेस नहीं किए जाते हैं, उनकी ताजगी की परवाह किए बिना कैश से हटा दिए जाते हैं।

कैश सत्यापन और विलोपन कैसे काम करता है

नगीने मेलिंग सूचियों से लिया गया

  • निर्देश छद्म_चेचे_वलिद निर्दिष्ट करता है कि कब तक प्रतिक्रिया को वैध माना जाएगा (और बैकएंड के किसी भी अनुरोध के बिना वापस कर दिया जाएगा)। इस समय के बाद प्रतिक्रिया को "बासी" माना जाएगा और या तो वापस नहीं किया जाएगा या प्रॉक्सी_cache_use_stale सेटिंग पर निर्भर करेगा ।

  • प्रॉक्सी_cache_path का तर्क निष्क्रिय निर्दिष्ट करता है कि अंतिम उपयोग के बाद कैश में कब तक संग्रहीत किया जाएगा। ध्यान दें कि बासी प्रतिक्रियाओं को भी हाल ही में उपयोग करने पर विचार किया जाएगा यदि उनके लिए अनुरोध हैं।

जैसा कि मैं समझता हूं, यहां छद्म कोड कैसे काम करता है

जब अनुरोध आ रहा है

if cache.exist AND (now() - cache.first_retrieved) < proxy_cache_valid:
    use it
else:
    retrieve from backend
    replace the old ones

अन्य प्रक्रिया में, कैश प्रबंधक यह तर्क करता है

if (now() - cache.last_used) > inactive:
    del cache

if all-cache.size > max-size:
    del *the most inactive cache* until size < max-size

क्या होगा अगर प्रॉक्सी_कैचे_वालिड (12h) प्रॉक्सी_केचे_पथ में निर्दिष्ट निष्क्रिय मूल्य (1h) से अधिक है?

जब तक अनुरोध और विशेष कैश तक पहुँचा, तब तक कैश में रखी गई वस्तु के बाद वह कैश ऑब्जेक्ट १२ घंटों तक मान्य रहेगा। उसके बाद, कैश को अमान्य माना गया था, इसलिए nginx बैकएंड से आएगा और मान्य टाइमर को रीसेट करेगा। लेकिन अगर ऑब्जेक्ट एक घंटे से अधिक समय तक निष्क्रिय (एक्सेस नहीं किया गया) - यहां तक ​​कि 12h वैध-कैश-अवधि में -, तो nginx पैरामीटर के कारण इसे हटा देगा inactive


"उसके बाद, कैश को अमान्य माना गया था, इसलिए nginx बैकएंड से आएगा और मान्य टाइमर को रीसेट करेगा।" - वह दिलचस्प है। यदि कोई उपयोगकर्ता इसे प्राप्त नहीं करता है, तो भी nginx अनुरोध प्राप्त करता है? इसलिए, उदाहरण के लिए, यदि निष्क्रिय है 365dऔर वैध है 1dतो nginx प्रत्येक दिन एक वर्ष के लिए कैश में अनुरोध लाएगा भले ही वह कोई भी अनुरोध क्यों न करे?
मार्टिन थोमा

1
अच्छा जवाब, लेकिन मैं माप की इकाइयों पर किसी भी प्रलेखन को खोजने के लिए प्रतीत नहीं हो सकता है जो हम इन मापदंडों में से कुछ के साथ उपयोग करते हैं। उदाहरण के लिए, inactiveपरमान समय मान लेता है , लेकिन मैं यह नहीं देखता कि मैं किन मूल्यों का उपयोग कर सकता हूं h(1 महीने के बारे में कैसे? या 1 दिन? आदि)। और हमें किसके साथ निर्दिष्ट करना चाहिए max_size? बाइट्स? क्या मैं 1 मेगाबाइट के लिए 1M का उपयोग कर सकता हूं?
सुनील डी।

4
@SunilD। - यहां आप जाएं: nginx.org/en/docs/syntax.html
adamczi
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.