कैश क्या है?

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

कैशिंग एक संसाधन की एक अस्थायी प्रतिलिपि को इस तरह से संग्रहीत करने की एक प्रक्रिया है कि इसे सामान्य रूप से तेजी से एक्सेस किया जा सकता है। सॉफ्टवेयर और हार्डवेयर दोनों में कार्यान्वयन की एक विशाल श्रृंखला है। कैश रीड कैश के रूप में कार्य कर सकते हैं, कैश लिख सकते हैं, या दोनों।

कैश पढ़ें

पठन कैश में डेटा जिसे पहले अनुरोध किया गया है, तेजी से पहुंच के लिए कैश में संग्रहीत किया जाता है। कुछ परिदृश्यों में, कैश को डेटा के साथ पूर्व-खाली रूप से लोड किया जा सकता है, जिससे पहले अनुरोध को केवल बाद के अनुरोधों के बजाय कैश से परोसा जा सकता है।

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

RAM स्वयं हार्ड ड्राइव में डेटा के लिए रीड कैशे के रूप में भी कार्य करता है। इस मामले में, एक चल रहे प्रोग्राम के लिए डेटा को रैम में पहले से लोड किया जाता है ताकि सीपीयू इसे तेजी से एक्सेस कर सके। रैम से डेटा को फिर सीपीयू कैश में कैश किया जाता है, हालांकि इसके लिए प्रक्रिया बहुत अधिक जटिल है क्योंकि सीपीयू कैश को मेगाबाइट में मापा जाता है न कि गीगाबाइट में।

कैश लिखें

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

हाइब्रिड कैश

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

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

कैश से डेटा कैसे निकालें?

किसी भी कैश के सीमित कारकों में से एक क्षमता है। पहली बार में कैश का उपयोग करने के लाभ के एक अच्छे हिस्से को नकारते हुए, एक बड़े कैश को खोजने में लंबा समय लगता है। कैशिंग के लिए उपयोग की जाने वाली मेमोरी प्रौद्योगिकियां भी उस मेमोरी से अधिक महंगी होती हैं जिससे वे कैशिंग कर रहे हैं। यदि ऐसा नहीं होता, तो संभव है कि उस मेमोरी टियर ने प्रदर्शन को बेहतर बनाने के लिए मेमोरी तकनीकों को बदल दिया होता। इन दोनों कारकों का मतलब है कि कैश अपेक्षाकृत छोटा होता है, खासकर जब उस स्टोरेज माध्यम से तुलना की जाती है जिससे वे कैशिंग कर रहे होते हैं। RAM में स्टोरेज की तुलना में कम क्षमता होती है और CPU कैश में RAM की तुलना में कम क्षमता होती है। SLC कैश में TLC मेमोरी की तुलना में कम क्षमता होती है।

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

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

पुरानी जानकारी और सुरक्षा जोखिम

कैश का मुख्य जोखिम यह है कि उनमें मौजूद जानकारी पुरानी हो सकती है। कैश प्रविष्टि को पुराना माना जाता है जब मूल डेटा को कैश प्रविष्टि को पुराना छोड़कर अद्यतन किया जाता है। यह नियमित रूप से सत्यापित करना महत्वपूर्ण है कि प्रस्तुत की जा रही लाइव कॉपी अभी भी कैश्ड कॉपी से मेल खाती है।

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

निष्कर्ष

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