कैश मेमोरी कुंजी की मदद से काम करना

Apigee Edge दस्तावेज़ देखा जा रहा है.
Apigee X दस्तावेज़ पर जाएं.
जानकारी

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

कॉन्फ़िगरेशन एलिमेंट की वैल्यू -- <CacheKey>/<KeyFragment>, <Scope>, और <Prefix> -- को एक ऐसा आइडेंटिफ़ायर बनाने के लिए जोड़ा जाता है जो कैश में आपकी डाली गई वैल्यू से जुड़ा हो. वैल्यू वापस पाने के लिए भी इसी कॉन्फ़िगरेशन का इस्तेमाल किया जाता है.

कैश मेमोरी की नीति के कॉन्फ़िगरेशन के इन एलिमेंट की मदद से, कैश मेमोरी की कुंजी बनाई जा सकती है:

कैश मेमोरी का कॉन्फ़िगरेशन एलिमेंट ब्यौरा
<CacheKey> / <KeyFragment> कैश एंट्री का यूनीक आइडेंटिफ़ायर बताने के लिए, <CacheKey> <KeyFragment> एलिमेंट का इस्तेमाल करें. Keyफ़्रैगमेंट की वैल्यू, स्टैटिक लिटरल हो सकती हैं या वैरिएबल से सेट की जा सकती हैं.
<Scope> या <Prefix> कैश मेमोरी कुंजियों को और नेमस्पेस करने के लिए, <Scope> या <Prefix> एलिमेंट का इस्तेमाल करें. <Scope>, पहले से तय वैल्यू की सूची दिखाता है. <Prefix> एलिमेंट, <Scope> को आपकी पसंद की वैल्यू से बदल देता है.

इन वैल्यू को इस फ़ॉर्म में जोड़ा जाता है. इसमें <Scope> या <Prefix> वैल्यू को डबल-अंडरस्कोर की मदद से Keyफ़्रैगमेंट की वैल्यू से अलग किया जाता है. एक से ज़्यादा Keyफ़्रैगमेंट वैल्यू को भी डबल अंडरस्कोर से अलग किया जाता है.

स्कोप | prefix__keyफ़्रैगमेंट[__keyफ़्रैगमेंट]

रिस्पॉन्स कैश नीति के साथ, इस कैश कुंजी को रिस्पॉन्स स्वीकार करें हेडर के वैल्यू के साथ जोड़ा जा सकता है. हालांकि, ऐसा करना ज़रूरी नहीं है.

<cacheKey> का इस्तेमाल करना

<CacheKey> एलिमेंट यह कॉन्फ़िगर करता है कि Edge से बनाई जाने वाली हर कैश एंट्री के लिए, एक यूनीक आइडेंटिफ़ायर (एक कुंजी) कैसे बनाएगा. जब Edge, कैश मेमोरी में सेव की गई वैल्यू को फिर से हासिल करता है, तो यह सही वैल्यू का पता लगाने के लिए कैश कुंजी का इस्तेमाल करता है. Responseकैश नीति में, एक कॉन्फ़िगरेशन, कैश मेमोरी में सेव करने और वापस पाने, दोनों के लिए कुंजी के बारे में बताता है. पॉप्युलेट कैश और lookupकैश नीतियों में, हर नीति में एक जैसे <CacheKey> एलिमेंट होने चाहिए, ताकि यह पक्का किया जा सके कि कैश से मिली वैल्यू, वहां डाली गई वैल्यू से मेल खाती है.

<CacheKey> एलिमेंट में एक से ज़्यादा <KeyFragment> एलिमेंट शामिल हो सकते हैं. रनटाइम के दौरान, <KeyFragment> एलिमेंट की बताई गई वैल्यू को कैश कुंजी का हिस्सा बनाने के लिए, उनके बीच दो अंडरस्कोर जोड़े जाते हैं.

उदाहरण के लिए, नीचे दिया गया कॉन्फ़िगरेशन कैश कुंजी में इस्तेमाल करने के लिए, hello__world की वैल्यू बनाता है:

<CacheKey>
    <KeyFragment>hello</KeyFragment>
    <KeyFragment>world</KeyFragment>
<CacheKey>

आपके पास कैश कुंजी में वैरिएबल वैल्यू का इस्तेमाल करने का भी विकल्प है. इसके लिए, <KeyFragment> एलिमेंट में वैरिएबल का रेफ़रंस दें, जैसा कि यहां दिखाया गया है:

<KeyFragment ref="variable_name"/>

उदाहरण के लिए, कैश कुंजी की वैल्यू को अनुरोध मैसेज के कॉन्टेंट-टाइप में शामिल करने के लिए, ये काम करें:

<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&param2=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&param2=value2 और param2=value2&param1=value1 से कैश कुंजी की एक ही वैल्यू नहीं मिलती.

इस्तेमाल किए जा सकने वाले वैरिएबल की सूची के लिए, वैरिएबल रेफ़रंस देखें.

<Scope> और <प्रीफ़िक्स> का इस्तेमाल करना

<Scope> और <Prefix> एलिमेंट से, कुंजी को नेमस्पेस प्रीफ़िक्स के साथ बेहतर बनाया जा सकता है. इनकी वैल्यू, कैश मेमोरी कुंजी से पहले जोड़ी जाती हैं.

<Scope> एलिमेंट का इस्तेमाल डिफ़ॉल्ट रूप से किया जाता है. यह एक गिनती है, जिसकी वैल्यू ब्रॉड से छोटी रेंज में होती हैं. साथ ही, सबसे छोटी वैल्यू, डिफ़ॉल्ट के तौर पर होती है. इस डिफ़ॉल्ट वैल्यू का इस्तेमाल तब तक किया जाता है, जब तक कि कोई दूसरी वैल्यू तय नहीं की जाती या <Prefix> एलिमेंट की वैल्यू तय नहीं की जाती. <Prefix> एलिमेंट का इस्तेमाल करके, <Scope> वैल्यू को बदला जा सकता है. इसलिए, नेमस्पेस के लिए कस्टम वैल्यू तय करें.

उदाहरण के लिए, <Scope> वैल्यू "ग्लोबल" -- सबसे बड़ा स्कोप -- संगठन और एनवायरमेंट के नाम को दिखाता है. इसलिए, अगर आपकी प्रॉक्सी को '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> के लिए खास वैल्यू का इस्तेमाल करके बनाई गई कैश कुंजी ऐसी दिखेगी:

apifactory__test__weatherapi__16__default__apiAccessToken