LookupCache नीति

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

यह कॉन्फ़िगर करता है कि रनटाइम के दौरान, कैश मेमोरी में सेव की गई वैल्यू कैसे वापस लाई जाएं.

इस नीति को सामान्य मकसद के लिए, कम समय के लिए कैश मेमोरी में इस्तेमाल करने के मकसद से बनाया गया है. इसका इस्तेमाल, कैश मेमोरी में जानकारी भरने की नीति (एंट्री लिखने के लिए) और कैश मेमोरी को अमान्य करने की नीति (एंट्री को गलत करने के लिए) के साथ मिलाकर किया जाता है.

बैकएंड रिसॉर्स के रिस्पॉन्स को कैश मेमोरी में सेव करने के लिए, रिस्पॉन्स कैश से जुड़ी नीति देखें.

एलिमेंट का रेफ़रंस

यहां उन एलिमेंट की सूची दी गई है जिन्हें इस नीति पर कॉन्फ़िगर किया जा सकता है.

<LookupCache async="false" continueOnError="false" enabled="true" name="Lookup-Cache-1">
    <DisplayName>Lookup Cache 1</DisplayName>
    <Properties/>
    <CacheKey>
        <Prefix/>
        <KeyFragment ref=""/>
    </CacheKey>
    <!-- Omit this element if you're using the included shared cache. -->
    <CacheResource/>
    <CacheLookupTimeoutInSeconds/>
    <Scope>Exclusive</Scope>
    <AssignTo>flowVar</AssignTo>
</LookupCache>

शेयर की गई कैश मेमोरी, डिफ़ॉल्ट रूप से शामिल होती है. शेयर की गई कैश मेमोरी का इस्तेमाल करने के लिए, नीति के इस कॉन्फ़िगरेशन में <CacheResource> एलिमेंट को हटा दें.

डेटा स्टोर के बारे में ज़्यादा जानकारी के लिए, कैश इंटरनल लेख पढ़ें. कैश मेमोरी कॉन्फ़िगर करने के बारे में ज़्यादा जानने के लिए, एनवायरमेंट कैश बनाना और उसमें बदलाव करना लेख पढ़ें.

<LookupCache> एट्रिब्यूट

इस टेबल में उन एट्रिब्यूट के बारे में बताया गया है जो नीति के सभी पैरंट एलिमेंट के लिए एक जैसे होते हैं:

एट्रिब्यूट ब्यौरा डिफ़ॉल्ट मौजूदगी
name

नीति का अंदरूनी नाम. name एट्रिब्यूट की वैल्यू में अक्षर, संख्याएं, स्पेस, हाइफ़न, अंडरस्कोर, और पीरियड शामिल किए जा सकते हैं. इस वैल्यू में 255 से ज़्यादा वर्ण नहीं हो सकते.

इसके अलावा, मैनेजमेंट यूज़र इंटरफ़ेस (यूआई) प्रॉक्सी एडिटर में नीति को आम भाषा में अलग नाम से लेबल करने के लिए, <DisplayName> एलिमेंट का इस्तेमाल करें.

लागू नहीं ज़रूरी है
continueOnError

इस नीति को false पर सेट करें, ताकि नीति के काम न करने पर गड़बड़ी का मैसेज दिखे. ज़्यादातर नीतियों में, ऐसा आम तौर पर किया जाता है.

किसी नीति के काम न करने पर भी फ़्लो एक्ज़ीक्यूट करने की प्रोसेस को जारी रखने के लिए, true पर सेट करें.

false ज़रूरी नहीं
enabled

नीति लागू करने के लिए, true पर सेट करें.

नीति को बंद करने के लिए, false पर सेट करें. अगर यह नीति किसी फ़्लो से जुड़ी हुई है, तब भी उसे लागू नहीं किया जाएगा.

सही ज़रूरी नहीं
async

यह एट्रिब्यूट अब काम नहीं करता.

false बहिष्कृत

<DisplayName> एलिमेंट

मैनेजमेंट यूज़र इंटरफ़ेस (यूआई) प्रॉक्सी एडिटर में, आम भाषा के अलग नाम से नीति को लेबल करने के लिए, name एट्रिब्यूट का इस्तेमाल करें.

<DisplayName>Policy Display Name</DisplayName>
डिफ़ॉल्ट

लागू नहीं

अगर इस एलिमेंट को छोड़ दिया जाता है, तो नीति के name एट्रिब्यूट की वैल्यू का इस्तेमाल किया जाता है.

मौजूदगी ज़रूरी नहीं
Type String

<assignTo> एलिमेंट

उस वैरिएबल के बारे में बताता है जिसमें कैश एंट्री को कैश से वापस पाने के बाद, असाइन किया जाता है. वैरिएबल लिखने लायक होना चाहिए. अगर कैश लुकअप कोई वैल्यू नहीं देता है, तो वैरिएबल सेट नहीं किया जाएगा.

<AssignTo>variable_to_receive_cached_value</AssignTo>

डिफ़ॉल्ट:

लागू नहीं

मौजूदगी:

ज़रूरी है

टाइप:

String

<CacheKey> एलिमेंट

यह नीति कैश में स्टोर किए गए डेटा के किसी हिस्से के लिए यूनीक पॉइंटर कॉन्फ़िगर करती है.

<CacheKey>
    <Prefix>string</Prefix>
    <KeyFragment ref="variable_name" />
    <KeyFragment>literal_string</KeyFragment>
</CacheKey>

डिफ़ॉल्ट:

लागू नहीं

मौजूदगी:

ज़रूरी है

टाइप:

लागू नहीं

<CacheKey>, कैश में स्टोर किए गए डेटा के हर हिस्से का नाम बनाता है.

रनटाइम के दौरान, <KeyFragment> वैल्यू को <Scope> एलिमेंट की वैल्यू या <Prefix> वैल्यू के साथ जोड़ा जाता है. उदाहरण के लिए, यहां दिए गए नतीजों से, कैश मेमोरी में सेव UserToken__apiAccessToken__<value_of_client_id> की वैल्यू मिलती है:

<CacheKey>
    <Prefix>UserToken</Prefix>
    <KeyFragment>apiAccessToken</KeyFragment>
    <KeyFragment ref="request.queryparam.client_id" />
</CacheKey>

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

<CacheLookupTimeoutInSeconds> एलिमेंट

यह नीति सेकंड की वह संख्या बताती है जिसके बाद कैश मेमोरी में जगह की जानकारी का गलत इस्तेमाल होने की वजह को 'कैश मेमोरी में सेव नहीं किया गया' माना जाएगा. अगर ऐसा होता है, तो फ़्लो, कैश मेमोरी में चुने गए पाथ के साथ फिर से शुरू हो जाता है.

<CacheLookupTimeoutInSeconds>30</CacheLookupTimeoutInSeconds>

डिफ़ॉल्ट:

30

मौजूदगी:

ज़रूरी नहीं

टाइप:

Integer

<cacheResource> एलिमेंट

इस नीति से यह तय होता है कि कैश मेमोरी में मैसेज कहां सेव किए जाएं.

अगर यह नीति (और आपकी संबंधित Populateकैश और अमान्य कैश नीतियां) शेयर की गई कैश मेमोरी का इस्तेमाल कर रही है, तो इस एलिमेंट को पूरी तरह से छोड़ दें.

<CacheResource>cache_to_use</CacheResource>

डिफ़ॉल्ट:

लागू नहीं

मौजूदगी:

ज़रूरी नहीं

टाइप:

String

कैश मेमोरी कॉन्फ़िगर करने के बारे में ज़्यादा जानने के लिए, एनवायरमेंट कैश बनाना और उसमें बदलाव करना लेख पढ़ें.

<CacheKey>/<KeyFragment> एलिमेंट

यह एक ऐसी वैल्यू तय करती है जिसे कैश कुंजी में शामिल किया जाना चाहिए. इस तरह, कैश मेमोरी में सेव किए गए रिस्पॉन्स से मेल खाने वाले अनुरोधों के लिए एक नेमस्पेस बनाया जाता है.

<KeyFragment ref="variable_name"/>
<KeyFragment>literal_string</KeyFragment>

डिफ़ॉल्ट:

लागू नहीं

मौजूदगी:

ज़रूरी नहीं

टाइप:

लागू नहीं

यह कोई कुंजी (आपकी ओर से दिया गया स्टैटिक नाम) या कोई वैल्यू (किसी वैरिएबल का रेफ़रंस देकर सेट की गई डाइनैमिक एंट्री) हो सकती है. कैश कुंजी बनाने के लिए, तय किए गए सभी फ़्रैगमेंट (साथ ही प्रीफ़िक्स) जोड़े जाते हैं.

<KeyFragment>apiAccessToken</KeyFragment>
<KeyFragment ref="request.queryparam.client_id" />

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

विशेषताएं

एट्रिब्यूट टाइप डिफ़ॉल्ट ज़रूरी है ब्यौरा
रेफ़रंस स्ट्रिंग नहीं

वह वैरिएबल जिससे वैल्यू हासिल करनी है. अगर इस एलिमेंट में लिटरल वैल्यू है, तो इसका इस्तेमाल नहीं किया जाना चाहिए.

<CacheKey>/<प्रीफ़िक्स> एलिमेंट

इससे पता चलता है कि वैल्यू को कैश कुंजी के प्रीफ़िक्स के तौर पर इस्तेमाल करना है.

<Prefix>prefix_string</Prefix>

डिफ़ॉल्ट:

लागू नहीं

मौजूदगी:

ज़रूरी नहीं

टाइप:

String

अगर आपको <Scope> की गिनती वाली वैल्यू के बजाय, खुद की वैल्यू बतानी है, तो <Scope> के बजाय इस वैल्यू का इस्तेमाल करें. अगर तय किया जाए, तो <Prefix>, कैश मेमोरी में लिखी गई एंट्री के लिए, कैश कुंजी की वैल्यू से पहले जोड़ता है. <Prefix> एलिमेंट की वैल्यू, <Scope> एलिमेंट की वैल्यू को बदल देती है.

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

<Scope> एलिमेंट

<CacheKey> एलिमेंट में <Prefix> एलिमेंट न दिए जाने पर, कैश कुंजी के लिए प्रीफ़िक्स बनाने के लिए इस्तेमाल की जाने वाली गिनती.

<Scope>scope_enumeration</Scope>

डिफ़ॉल्ट:

"खास"

मौजूदगी:

ज़रूरी नहीं

टाइप:

String

<Scope> सेटिंग एक कैश कुंजी तय करती है, जिसे <Scope> वैल्यू के हिसाब से पहले जोड़ा जाता है. उदाहरण के लिए, Exclusive पर स्कोप सेट करने पर कैश कुंजी इस फ़ॉर्म में होगी : orgName__envName__applicationName__applyedRevisionNumber__प्रॉक्सी|TargetName__ [ serializedCacheKey ].

अगर <CacheKey> में <Prefix> एलिमेंट मौजूद है, तो यह <Scope> एलिमेंट की वैल्यू की जगह ले लेगा. मान्य वैल्यू में ये सूचियां शामिल हैं.

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

स्वीकार की जा सकने वाली वैल्यू

Global

कैश कुंजी, एनवायरमेंट में डिप्लॉय किए गए सभी एपीआई प्रॉक्सी में शेयर की जाती है. कैश कुंजी orgName __ envName __ के तौर पर पहले जोड़ी जाती है.

अगर <KeyFragment> apiAccessToken और <Global> स्कोप के साथ <CacheKey> एंट्री तय की जाती है, तो हर एंट्री orgName__envName__apiAccessToken के तौर पर स्टोर होती है. इसके बाद, ऐक्सेस टोकन की क्रम वाली वैल्यू दी जाती है. 'apiFactory' नाम के संगठन में 'टेस्ट' कहे जाने वाले एनवायरमेंट में डिप्लॉय किए गए एपीआई प्रॉक्सी के लिए, ऐक्सेस टोकन को कैश मेमोरी की इस कुंजी में सेव किया जाएगा: apifactory__test__apiAccessToken.

Application

एपीआई के प्रॉक्सी नाम का इस्तेमाल प्रीफ़िक्स के तौर पर किया जाता है.

कैश कुंजी orgName__envName__ऐप्लिकेशननाम के तौर पर पहले जोड़ी जाती है.

Proxy

ProxyEndpoint कॉन्फ़िगरेशन का इस्तेमाल प्रीफ़िक्स के तौर पर किया जाता है.

कैश कुंजी orgName__envName__ऐप्लिकेशनName__applyedRevisionNumber__proxyEndpointName के तौर पर पहले जोड़ी जाती है.

Target

टारगेटएंडपॉइंट कॉन्फ़िगरेशन का इस्तेमाल प्रीफ़िक्स के तौर पर किया जाता है.

कैश मेमोरी कुंजी को orgName__envName__ऐप्लिकेशनName__applyedRevisionNumber__targetEndpointName के तौर पर पहले जोड़ा जाता है.

Exclusive

डिफ़ॉल्ट. यह सबसे सटीक विकल्प है. इसलिए, इसमें किसी कैश मेमोरी में नेमस्पेस के टकराव का कम जोखिम होता है.

प्रीफ़िक्स दो तरह से एक है:

  • अगर यह नीति ProxyEndpoint फ़्लो से जुड़ी होती है, तो प्रीफ़िक्स ApiProxyName_ProxyEndpointName के रूप में होता है.
  • अगर नीति TargetEndpoint पर अटैच की गई है, तो प्रीफ़िक्स ApiProxyName_TargetName के रूप में होता है.

कैश कुंजी कुंजी को इस फ़ॉर्मैट में पहले से जोड़ा जाता है orgName__envName__applicationName__ उतनेRevisionNumber___प्रॉक्सीNameITargetName

उदाहरण के लिए, पूरी स्ट्रिंग इस तरह दिख सकती है:

apifactory__test__weatherapi__16__default__apiAccessToken
.

इस्तेमाल की जानकारी

अलग-अलग कामों के लिए कैश मेमोरी में सेव करने के लिए, इस नीति का इस्तेमाल करें. रनटाइम के दौरान, LookupCache नीति कैश से एक वैल्यू इकट्ठा करती है और उस वैरिएबल को वैल्यू असाइन करती है जिसे आपने AssignmentsTo एलिमेंट के साथ तय किया है (अगर कोई वैल्यू वापस नहीं मिलती है, तो वैरिएबल सेट नहीं होगा). यह उस कॉन्फ़िगरेशन के ज़रिए बनाई गई कैश कुंजी पर आधारित वैल्यू खोजता है जिसमें cacheKey और Scope एलिमेंट जुड़े होते हैं. दूसरे शब्दों में, अगर किसी खास वैल्यू को PopulateCache नीति के ज़रिए कैश में जोड़ा गया है, तो उसे वापस पाने के लिए, आपकी LookupCache नीति में कैश कुंजी से जुड़े एलिमेंट की प्रोसेस को ठीक उसी तरह कॉन्फ़िगर किया जाना चाहिए जिस तरह से पॉप्युलेट कैश नीति में की जाती है.

सामान्य तरीके से कैश मेमोरी में सेव करने के लिए, कैश मेमोरी में डेटा भरने की नीति, LookupCache नीति, और अमान्य कैश नीति की मदद से, कैश मेमोरी में सेव करने की सुविधा के लिए, आपकी कॉन्फ़िगर की गई कैश मेमोरी या डिफ़ॉल्ट रूप से शामिल शेयर की गई कैश मेमोरी का इस्तेमाल किया जाता है. ज़्यादातर मामलों में, शेयर की गई कैश मेमोरी आपकी ज़रूरतों के मुताबिक होनी चाहिए. डिफ़ॉल्ट कैश मेमोरी का इस्तेमाल करने के लिए, <CacheResource> एलिमेंट को हटा दें.

कैश मेमोरी कॉन्फ़िगर करने के बारे में ज़्यादा जानने के लिए, एनवायरमेंट कैश बनाना और उसमें बदलाव करना लेख पढ़ें. डेटा स्टोर के बारे में ज़्यादा जानकारी के लिए, कैश इंटरनल लेख पढ़ें.

फ़्लो वैरिएबल

फ़्लो वैरिएबल का इस्तेमाल एचटीटीपी हेडर या मैसेज के कॉन्टेंट या फ़्लो में उपलब्ध संदर्भ के आधार पर, नीतियों और फ़्लो के लिए डाइनैमिक रनटाइम के व्यवहार को कॉन्फ़िगर करने के लिए किया जा सकता है. फ़्लो वैरिएबल के बारे में ज़्यादा जानकारी के लिए, वैरिएबल रेफ़रंस देखें.

कैश मेमोरी की नीति में तय किए गए कैश के तरीके को पसंद के मुताबिक बनाने के बाद, पहले से तय किए गए फ़्लो के ये वैरिएबल उपलब्ध होते हैं.

वैरिएबल टाइप अनुमति ब्यौरा
lookupcache.{policy-name}.cachename String रीड-ओनली नीति में इस्तेमाल की गई कैश मेमोरी का नाम दिखाता है.
lookupcache.{policy-name}.cachekey String रीड-ओनली इस्तेमाल की गई कुंजी दिखाता है.
lookupcache.{policy-name}.cachehit बूलियन रीड-ओनली अगर नीति में बताई गई कैश कुंजी के लिए कोई वैल्यू मिलती है, तो वैल्यू 'सही' होगी.
lookupcache.{policy-name}.assignto String रीड-ओनली वह वैरिएबल दिखाता है जिसमें कैश मेमोरी असाइन की गई है.

गड़बड़ी कोड

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

गड़बड़ी कोड प्रीफ़िक्स

लागू नहीं

रनटाइम से जुड़ी गड़बड़ियां

इस नीति के तहत रनटाइम में कोई गड़बड़ी नहीं होती है.

डिप्लॉयमेंट से जुड़ी गड़बड़ियां

ये गड़बड़ियां तब हो सकती हैं, जब इस नीति वाले किसी प्रॉक्सी को डिप्लॉय किया जाता है.

गड़बड़ी का नाम वजह समाधान
InvalidCacheResourceReference यह गड़बड़ी तब होती है, जब <CacheResource> एलिमेंट को किसी ऐसे नाम पर सेट किया गया हो जो उस एनवायरमेंट में मौजूद नहीं है जहां एपीआई प्रॉक्सी को डिप्लॉय किया जा रहा है.
InvalidTimeout अगर <CacheLookupTimeoutInSeconds> एलिमेंट को नेगेटिव नंबर पर सेट किया गया है, तो एपीआई प्रॉक्सी को डिप्लॉय नहीं किया जा सकता.
CacheNotFound यह गड़बड़ी तब होती है, जब गड़बड़ी के मैसेज में बताए गए कैश को किसी खास Message प्रोसेसर कॉम्पोनेंट पर न बनाया गया हो.

गड़बड़ी वाले वैरिएबल

लागू नहीं

गड़बड़ी के जवाब का उदाहरण

लागू नहीं