रैंडम कैश एक्सपायरी


13

मैं उन परिस्थितियों से बचने के लिए यादृच्छिक कैश एक्सपायरी बार प्रयोग कर रहा हूं जहां एक व्यक्ति अनुरोध एक बार में कई चीजों को अपडेट करने के लिए मजबूर करता है। उदाहरण के लिए, एक वेब पेज में पांच अलग-अलग घटक शामिल हो सकते हैं। यदि प्रत्येक 30 मिनट में समय समाप्त हो जाता है, तो उपयोगकर्ता के पास प्रत्येक 30 मिनट में एक लंबा प्रतीक्षा समय होगा। इसलिए इसके बजाय, आपने उन सभी को 15 से 45 मिनट के बीच यादृच्छिक समय पर सेट किया है ताकि यह संभव हो सके कि किसी भी पेज लोड के लिए केवल एक ही घटक पुनः लोड हो।

मैं इस विषय पर कोई शोध या दिशानिर्देश खोजने की कोशिश कर रहा हूं, जैसे कि इष्टतम विचरण पैरामीटर। मुझे याद है कि Google इस तकनीक का उपयोग करने के बारे में एक लेख देखकर याद करता है, लेकिन इसका पता नहीं लगा सकता, और विषय के बारे में बहुत कुछ लिखा हुआ नहीं लगता है।


क्या आप इसे एक प्रश्न के रूप में पुनः लिख सकते हैं? यह स्पष्ट नहीं है कि आप उत्तर के लिए क्या अपेक्षा कर रहे हैं।
डेरेक

ठीक है, हो गया।
Mahemoff

जवाबों:


4

कुछ दस्तावेज:


3
इन लिंक के लिए धन्यवाद, लेकिन उनमें से कोई भी यादृच्छिकता का उल्लेख नहीं करता है।
Mahemoff

2
मुझे पता है कि यह सवाल कितना पुराना है, लेकिन एस्टारोलाइन लिमिटेड के मैथ्यू नेएल ने सिर्फ यही (पीडीएफ) किया: estaronline.com/images/assetimages/…
निक बेडफोर्ड

@NickBedford यह वह उत्तर है जिसकी मुझे तलाश थी। आपकी टिप्पणी को स्वीकृत उत्तर होना चाहिए।
व्हाइटहॉटलॉव टाइगर

0

अपने स्वयं के प्रश्न का उत्तर देने के लिए वापस आना, यहां मुख्य समस्या यह है कि एक ही समय में हमेशा समाप्त होने वाली हर चीज से कैसे बचा जाए। यदि ऐसा होने की अनुमति दी जाती है, तो सिस्टम कैश को फिर से पॉप्युलेट करता है और धीमा हो जाएगा।

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

निश्चित रूप से ऐसे समय होते हैं जब कई चीजों को एक समय में कैश करने की आवश्यकता होती है, जैसे कि एक सिस्टम शुरू करने के बाद, अगर हमने पूरा कैश क्लियर कर दिया है या कैश कीज घुमा दी हैं। इस मामले में, यह आमतौर पर इतना बुरा नहीं है क्योंकि घटक तेजी से भरते हैं, और समाप्ति बाद में अलग हो जाएंगे।

इस समस्या के लिए कुछ हद तक समाधान है:

  • बस एक निश्चित अवधि के बजाय एक सीमा के भीतर एक यादृच्छिक कैश समाप्ति अवधि चुनें, उदाहरण के लिए 60 मिनट के बजाय 15 और 90 मिनट के बीच एक यादृच्छिक पूर्णांक।
  • बासी प्रतिक्रियाओं की अनुमति दें। सिर्फ इसलिए कि कोई कैश आइटम समाप्त हो गया है, इसका मतलब यह नहीं है कि आप इसका उपयोग नहीं कर सकते यदि यह अभी भी वहां है। व्यवसाय की जरूरतों के आधार पर, इसका उपयोग करने के लिए स्वीकार्य हो सकता है यदि समाप्ति के बाद मूल संस्करण लाने के लिए कोई प्रदर्शन समस्या है। HTTP में, यह "must-revalidate" का उद्देश्य है (यदि सच है, तो इसका मतलब है कि समाप्ति के बाद कैश्ड संस्करण का उपयोग नहीं करना है)।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.