आपको Apigee Edge का दस्तावेज़ दिख रहा है.
Apigee X के दस्तावेज़ पर जाएं. जानकारी
कैश मेमोरी की नीतियां इस्तेमाल करते समय, कैश मेमोरी की कुंजियां कॉन्फ़िगर करके, यह पक्का किया जाता है कि कैश मेमोरी में सेव की गई वैल्यू की कुंजियां यूनीक हों. कैश मेमोरी की कुंजी और कॉन्फ़िगर की जा सकने वाली अन्य वैल्यू की मदद से, आपको वही डेटा वापस मिलता है जो आपने डाला था. कैश मेमोरी की कुंजियों का इस्तेमाल PopulateCache नीति, LookupCache नीति, InvalidateCache नीति, और ResponseCache नीति के साथ किया जाता है.
कॉन्फ़िगरेशन एलिमेंट -- <CacheKey>/<KeyFragment>, <Scope>, और <Prefix> -- की वैल्यू को एक साथ जोड़कर एक आइडेंटिफ़ायर बनाया जाता है. यह आइडेंटिफ़ायर, उस वैल्यू से जुड़ा होता है जिसे आपने कैश मेमोरी में डाला है. वैल्यू वापस पाने के लिए, इसी कॉन्फ़िगरेशन का इस्तेमाल किया जाता है.
कैश मेमोरी की नीति के कॉन्फ़िगरेशन के इन एलिमेंट की मदद से, कैश मेमोरी की कुंजी बनाई जा सकती है:
| कैश कॉन्फ़िगरेशन एलिमेंट | ब्यौरा |
|---|---|
<CacheKey> / <KeyFragment> |
कैश मेमोरी की एंट्री के लिए यूनीक आइडेंटिफ़ायर तय करने के लिए, <CacheKey> <KeyFragment> एलिमेंट का इस्तेमाल करें. KeyFragment वैल्यू, स्टैटिक लिटरल हो सकती हैं या इन्हें वैरिएबल से सेट किया जा सकता है. |
<Scope> या <Prefix> |
<Scope> या <Prefix> एलिमेंट का इस्तेमाल करके, कैश मेमोरी की कुंजियों को और नेमस्पेस करें. <Scope>, पहले से तय की गई वैल्यू की सूची दिखाता है.
<Prefix> एलिमेंट, <Scope> एट्रिब्यूट की वैल्यू को आपकी चुनी हुई वैल्यू से बदल देता है. |
इन वैल्यू को इस फ़ॉर्म में जोड़ा जाता है. इसमें <Scope> या <Prefix> वैल्यू को KeyFragment वैल्यू से डबल-अंडरस्कोर से अलग किया जाता है.
एक से ज़्यादा KeyFragment वैल्यू को भी दो अंडरस्कोर से अलग किया जाता है.
scope | prefix__keyfragment[__keyfragment]
जवाब की कैश मेमोरी की नीति की मदद से, इस कैश मेमोरी की कुंजी को रिस्पॉन्स के Accept हेडर की वैल्यू के साथ जोड़ा जा सकता है. हालांकि, ऐसा करना ज़रूरी नहीं है.
<CacheKey> का इस्तेमाल करना
<CacheKey> एलिमेंट कॉन्फ़िगर करता है कि Edge, हर कैश एंट्री के लिए यूनीक आइडेंटिफ़ायर (कुंजी) कैसे बनाएगा. जब Edge, कैश मेमोरी में सेव की गई वैल्यू को फिर से हासिल करता है, तब वह सही वैल्यू का पता लगाने के लिए कैश मेमोरी की कुंजी का इस्तेमाल करता है. ResponseCache नीति में, एक कॉन्फ़िगरेशन, कैश मेमोरी में सेव करने और वापस पाने, दोनों के लिए कुंजी तय करता है. PopulateCache और LookupCache नीतियों में, हर नीति में एक जैसे <CacheKey>एलिमेंट होने चाहिए. इससे यह पक्का किया जा सकेगा कि कैश मेमोरी से मिली वैल्यू, वहां रखी गई वैल्यू से मेल खाती हो.
<CacheKey> एलिमेंट में कई <KeyFragment> एलिमेंट शामिल हो सकते हैं. रनटाइम के दौरान, <KeyFragment> एलिमेंट से तय की गई वैल्यू को एक साथ जोड़ दिया जाता है. इनके बीच दो अंडरस्कोर होते हैं. ऐसा इसलिए किया जाता है, ताकि ये वैल्यू कैश मेमोरी की कुंजी का हिस्सा बन सकें.
उदाहरण के लिए, यहां दिया गया कॉन्फ़िगरेशन, कैश मेमोरी की कुंजी में इस्तेमाल करने के लिए hello__world वैल्यू बनाता है:
<CacheKey>
<KeyFragment>hello</KeyFragment>
<KeyFragment>world</KeyFragment>
<CacheKey>वैरिएबल की वैल्यू का इस्तेमाल, कैश मेमोरी की कुंजी में भी किया जा सकता है. इसके लिए, वैरिएबल को <KeyFragment> एलिमेंट में रेफ़रंस करें. यहां दिखाया गया है:
<KeyFragment ref="variable_name"/>
उदाहरण के लिए, अनुरोध मैसेज के Content-Type को कैश मेमोरी की कुंजी की वैल्यू में शामिल करने के लिए, यह तरीका अपनाएं: you do as follows:
<KeyFragment ref="request.header.Content-Type"/>
इस कॉन्फ़िगरेशन में, request.header.Content-Type वैरिएबल की वैल्यू application/json है.
<CacheKey> <KeyFragment>apiAccessToken</KeyFragment> <KeyFragment ref="request.header.Content-Type" /> <KeyFragment>bar</KeyFragment> </CacheKey>
यह नतीजा, apiAccessToken__application/json__bar पर खत्म होने वाली कैश मेमोरी की कुंजी है.
इस्तेमाल किए जा सकने वाले वैरिएबल की सूची देखने के लिए, वैरिएबल रेफ़रंस पर जाएं.
क्वेरी पैरामीटर से मिली कैश मेमोरी में सेव करने की कुंजियां
request.queryparam.<queryparam_name> और request.querystring जैसे वैरिएबल का इस्तेमाल करके, कैश मेमोरी की कुंजी को कॉन्फ़िगर किया जा सकता है. इससे कुंजी में अनुरोध की क्वेरी स्ट्रिंग के हिस्से शामिल हो जाते हैं. उदाहरण के लिए, इस यूआरएल में दो क्वेरी पैरामीटर -- param1 और param2 -- का इस्तेमाल किया गया है. इनका इस्तेमाल अपनी कैश मेमोरी की कुंजी में किया जा सकता है:
http://myaccount.apigee.net/mydata?param1=value1¶m2=value2
आपका <CacheKey> एलिमेंट, इन वैल्यू को इस तरह के कॉन्फ़िगरेशन के साथ शामिल कर सकता है:
<CacheKey>
<KeyFragment ref="request.queryparam.param1" />
<KeyFragment ref="request.queryparam.param2" />
<CacheKey>रनटाइम के दौरान, कैश मेमोरी की कुंजी में पैरामीटर की वैल्यू को एक साथ जोड़ा जाएगा. जैसे, यहां दिया गया है:
other_key_parts__value1__value2
ध्यान रखें कि पैरामीटर से वैल्यू डालने के लिए वैरिएबल का इस्तेमाल करने पर, वैल्यू को <KeyFragment> एलिमेंट के क्रम के हिसाब से जोड़ा जाएगा. यह भी ध्यान दें कि Edge सिर्फ़ उन वैल्यू का इस्तेमाल करेगा जिन्हें आपने <KeyFragment> एलिमेंट के साथ खास तौर पर रेफ़र किया है. अगर आपके अनुरोध के क्वेरी पैरामीटर की सूचियां अलग-अलग हैं, तो कैश मेमोरी की कुंजी में बदलावों को शामिल नहीं किया जाएगा.
इसके अलावा, request.querystring वैरिएबल का इस्तेमाल किया जा सकता है. यह पैरामीटर की पूरी स्ट्रिंग को कैश मेमोरी की कुंजी के हिस्से के तौर पर डालता है. ध्यान रखें कि इस तरीके में सभी पैरामीटर शामिल होते हैं. हालांकि, अगर एक अनुरोध से दूसरे अनुरोध में पैरामीटर का क्रम बदलता है, तो कुंजी अलग होगी. दूसरे शब्दों में, param1=value1¶m2=value2 और param2=value2¶m1=value1 से एक जैसी कैश मेमोरी की वैल्यू नहीं मिलती.
इस्तेमाल किए जा सकने वाले वैरिएबल की सूची देखने के लिए, वैरिएबल रेफ़रंस पर जाएं.
<Scope> और <Prefix> का इस्तेमाल करना
<Scope> और <Prefix> एलिमेंट की मदद से, नेमस्पेस प्रीफ़िक्स के साथ कुंजी को बढ़ाया जा सकता है. ये वैल्यू, आपकी कैश मेमोरी की कुंजी के पहले जोड़ी जाती हैं.
<Scope> एलिमेंट का इस्तेमाल डिफ़ॉल्ट रूप से किया जाता है. यह एक इन्यूमरेशन है, जिसकी वैल्यू ब्रॉड से लेकर नैरो तक होती हैं. इसमें नैरो वैल्यू डिफ़ॉल्ट होती है. इस डिफ़ॉल्ट वैल्यू का इस्तेमाल तब तक किया जाता है, जब तक
कोई दूसरी वैल्यू या <Prefix> एलिमेंट की वैल्यू तय नहीं की जाती. <Prefix> एलिमेंट का इस्तेमाल करके, <Scope> वैल्यू को बदला जा सकता है
. साथ ही
, नेमस्पेसिंग के लिए कस्टम वैल्यू तय की जा सकती है.
उदाहरण के लिए, <Scope> वैल्यू "Global" -- सबसे बड़ा स्कोप -- संगठन और एनवायरमेंट के नाम को दिखाती है. इसलिए, अगर आपकी प्रॉक्सी को 'mycompany' नाम के किसी संगठन और 'prod' नाम के किसी एनवायरमेंट में डिप्लॉय किया गया है, तो प्रीपेंड की गई वैल्यू यह होगी:
| कॉन्फ़िगरेशन | नतीजा |
|---|---|
<Scope>Global</Scope> |
mycompany__prod__. |
अगर ऊपर दी गई कैश मेमोरी की कुंजी के साथ ग्लोबल स्कोप का इस्तेमाल किया जा रहा है, तो नतीजा इस तरह होगा:
| कॉन्फ़िगरेशन | नतीजा |
|---|---|
<Scope>Global</Scope>
<CacheKey>
<KeyFragment>hello</KeyFragment>
<KeyFragment>world</KeyFragment>
<CacheKey> |
mycompany__prod__hello__world. |
LookupCache नीति में बताए गए तरीके से, स्कोप को ग्लोबल से एक्सक्लूसिव तक कॉन्फ़िगर किया जा सकता है. एक्सक्लूसिव स्कोप सबसे खास होता है. इसलिए, यह किसी दिए गए कैश मेमोरी में नेमस्पेस के टकराव के जोखिम को कम करता है. एक्सक्लूसिव स्कोप वाली हर कैश मेमोरी एंट्री में, इस फ़ॉर्मैट में प्रीफ़िक्स होता है:
orgName__envName__apiProxyName__deployedRevisionNumber__proxy|TargetName__[serializedCacheKey]
उदाहरण के लिए, <Scope> के लिए Exclusive वैल्यू का इस्तेमाल करके बनाई गई कैश मेमोरी की कुंजी इस तरह दिखेगी:
apifactory__test__weatherapi__16__default__apiAccessToken