पॉप्युलेट कैश मेमोरी की नीति

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

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

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

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

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

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

<PopulateCache async="false" continueOnError="false" enabled="true" name="Populate-Cache-1">
    <DisplayName>Populate Cache 1</DisplayName>
    <Properties/>
    <CacheKey>
        <Prefix/>
        <KeyFragment ref=""/>
    </CacheKey>
    <!-- Omit this element if you're using the included shared cache. -->
    <CacheResource/>
    <Scope>Exclusive</Scope>
    <ExpirySettings>
        <TimeoutInSeconds>300</TimeoutInSeconds>
    </ExpirySettings>
    <Source>flowVar</Source>
</PopulateCache>

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

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

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

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

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

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

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

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

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

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

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

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

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

false बहिष्कृत

<DisplayName> एलिमेंट

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

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

लागू नहीं

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

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

<cacheKey> एलिमेंट

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

कैश कुंजी का साइज़ 2 केबी तक सीमित हो सकता है.

<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> के साथ किया जाता है. ज़्यादा जानकारी के लिए, कैश कुंजी के साथ काम करना लेख पढ़ें.

<cacheResource> एलिमेंट

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

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

<CacheResource>cache_to_use</CacheResource>

डिफ़ॉल्ट:

लागू नहीं

मौजूदगी:

ज़रूरी नहीं

टाइप:

String

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

<cacheKey>/<Keyफ़्रैगमेंट> एलिमेंट

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

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

डिफ़ॉल्ट:

लागू नहीं

मौजूदगी:

ज़रूरी नहीं

टाइप:

लागू नहीं

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

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

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

एट्रिब्यूट

एट्रिब्यूट Type डिफ़ॉल्ट ज़रूरी है ब्यौरा
संदर्भ स्ट्रिंग नहीं

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

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

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

<Prefix>prefix_string</Prefix>

डिफ़ॉल्ट:

लागू नहीं

मौजूदगी:

ज़रूरी नहीं

टाइप:

String

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

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

<ExpirySettings> एलिमेंट

यह तय करता है कि कैश एंट्री कब खत्म होनी चाहिए. मौजूद होने पर, <TimeoutInSeconds>, <TimeOfDay> और <ExpiryDate>, दोनों को बदल देता है.

<ExpirySettings>
  <!-- use exactly one of the following child elements -->
  <TimeoutInSeconds ref="duration_variable">seconds_until_expiration</TimeoutInSeconds>
  <ExpiryDate ref="date_variable">expiration_date</ExpiryDate>
  <TimeOfDay ref="time_variable">expiration_time</TimeOfDay>
</ExpirySettings>

डिफ़ॉल्ट:

लागू नहीं

मौजूदगी:

ज़रूरी है

टाइप:

लागू नहीं

<ExpirySettings> के चाइल्ड एलिमेंट

ठीक एक चाइल्ड एलिमेंट का इस्तेमाल करें. इस टेबल में <ExpirySettings> के चाइल्ड एलिमेंट की जानकारी दी गई है:

चाइल्ड एलिमेंट ब्यौरा
<TimeoutInSeconds>

सेकंड की वह संख्या जिसके बाद कैश एंट्री खत्म होनी चाहिए.

<ExpirySettings>
  <TimeoutInSeconds ref="var-containing-duration">expiry</TimeoutInSeconds>
</ExpirySettings>

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

<ExpiryDate>

यह नीति वह तारीख बताती है जब कैश एंट्री की समयसीमा खत्म हो जानी चाहिए. mm-dd-yyyy फ़ॉर्म में स्ट्रिंग बताएं.

<ExpirySettings>
  <ExpiryDate ref="var-containing-date">expiry</ExpiryDate>
</ExpirySettings>

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

<TimeOfDay>

दिन का वह समय बताता है जब कैश एंट्री खत्म हो जानी चाहिए. स्ट्रिंग को HH:mm:ss के फ़ॉर्मैट में डालें, जहां HH में, यूटीसी टाइम ज़ोन में 24 घंटे की घड़ी पर घंटे की जानकारी होती है. उदाहरण के लिए, 14:30:00 का मतलब है दोपहर 2:30 बजे.

<ExpirySettings>
  <TimeOfDay ref="var-containing-time">expiry</TimeOfDay>
</ExpirySettings>

आपको संभावित चाइल्ड एलिमेंट में से सिर्फ़ एक के बारे में बताना चाहिए. अगर आपने एक से ज़्यादा एलिमेंट तय किए हैं, तो प्राथमिकता का क्रम यह है:TimeoutInSeconds, ExpiryDate, TimeOfDay.

<ExpirySettings> के ऊपर दिए गए हर चाइल्ड एलिमेंट के साथ, अगर चाइल्ड एलिमेंट पर वैकल्पिक ref एट्रिब्यूट की जानकारी दी जाती है, तो नीति नाम वाले कॉन्टेक्स्ट वैरिएबल से समयसीमा खत्म होने की वैल्यू फिर से हासिल करेगी. अगर वैरिएबल तय नहीं किया गया है, तो नीति, चाइल्ड एलिमेंट की लिटरल टेक्स्ट वैल्यू का इस्तेमाल करती है.

<Scope> एलिमेंट

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

<Scope>scope_enumeration</Scope>

डिफ़ॉल्ट:

"खास"

मौजूदगी:

ज़रूरी नहीं

टाइप:

String

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

orgName__envName__apiProxyName__deployedRevisionNumber__proxy|TargetName__ [ orgName__envName__apiProxyName__deployedRevisionNumber__proxy|TargetName__ ]

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

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

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

Global

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

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

Application

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

कैश कुंजी कुंजी को orgName__envName__apiProxyName के रूप में पहले जोड़ा जाता है.

Proxy

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

कैश कुंजी कुंजी को orgName__envName__apiProxyName__deployedRevisionNumber__proxyEndpointName के रूप में पहले जोड़ा जाता है .

Target

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

कैश कुंजी कुंजी को orgName__envName__apiProxyName__deployedRevisionNumber__targetEndpointName फ़ॉर्म में पहले से जोड़ा जाता है .

Exclusive

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

प्रीफ़िक्स इन दो फ़ॉर्म में से एक है:

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

कैश कुंजी, पहले से इस फ़ॉर्म में जोड़ी जाती है orgName__envName__apiProxyName__deployedRevisionNumber__proxyNameITargetName

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

apifactory__test__weatherapi__16__default__apiAccessToken
.

<सोर्स> एलिमेंट

उस वैरिएबल के बारे में बताता है जिसकी वैल्यू को कैश मेमोरी में लिखा जाना चाहिए.

<Source>source_variable</Source>

डिफ़ॉल्ट:

लागू नहीं

मौजूदगी:

ज़रूरी है

टाइप:

String

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

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

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

कैश मेमोरी की सीमाएं: कैश मेमोरी की अलग-अलग सीमाएं लागू होती हैं. जैसे, नाम और वैल्यू का साइज़, कैश मेमोरी की कुल संख्या, कैश में मौजूद आइटम की संख्या, और उनका ऐक्सेस खत्म होने की तारीख.

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

कैश मेमोरी एन्क्रिप्ट (सुरक्षित) करने की सुविधा के बारे में जानकारी

Edge for Public Cloud: कैश मेमोरी को सिर्फ़ पीसीआई और हिपा की सुविधा वाले संगठनों में एन्क्रिप्ट (सुरक्षित) किया जाता है. उन संगठनों के लिए एन्क्रिप्शन, संगठन प्रावधान के दौरान कॉन्फ़िगर किया जाता है.

गड़बड़ी कोड

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

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

नीति के लागू होने पर ये गड़बड़ियां हो सकती हैं.

गड़बड़ी का कोड एचटीटीपी स्टेटस कब होता है
policies.populatecache.EntryCannotBeCached 500 किसी एंट्री को कैश मेमोरी में सेव नहीं किया जा सकता. कैश मेमोरी में सेव किया जा रहा मैसेज ऑब्जेक्ट, किसी ऐसी क्लास का इंस्टेंस नहीं है जिसे क्रम से लगाया जा सकता है.

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

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

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

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

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

वैरिएबल जगह उदाहरण
fault.name="fault_name" fault_name, गड़बड़ी का नाम है, जैसा कि ऊपर रनटाइम की गड़बड़ियां टेबल में दिया गया है. गड़बड़ी का नाम, गड़बड़ी के कोड का आखिरी हिस्सा होता है. fault.name = "EntryCannotBeCached"
populatecache.policy_name.failed policy_name, उस नीति का उपयोगकर्ता तय किया गया नाम है जिसकी वजह से गड़बड़ी हुई है. populatecache.POP-CACHE-1.failed = true

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

{
  "fault": {
    "faultstring": "[entry] can not be cached. Only serializable entries are cached.",
    "detail": {
      "errorcode": "steps.populatecache.EntryCannotBeCached"
    }
  }
}

गड़बड़ी के नियम का उदाहरण

<FaultRule name="Populate Cache Fault">
    <Step>
        <Name>AM-EntryCannotBeCached</Name>
        <Condition>(fault.name Matches "EntryCannotBeCached") </Condition>
    </Step>
    <Condition>(populatecache.POP-CACHE-1.failed = true) </Condition>
</FaultRule>