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

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

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

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

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

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

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

<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 पर सेट करें विफल होता है.

गलत वैकल्पिक
enabled

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

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

सही वैकल्पिक
async

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

गलत बहिष्कृत

&lt;DisplayName&gt; एलिमेंट

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

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

लागू नहीं

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

मौजूदगी वैकल्पिक
टाइप स्ट्रिंग

<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> एलिमेंट

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

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

<CacheResource>cache_to_use</CacheResource>

डिफ़ॉल्ट:

लागू नहीं

मौजूद होना:

ज़रूरी नहीं है

टाइप:

स्ट्रिंग

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

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

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

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

डिफ़ॉल्ट:

लागू नहीं

मौजूद होना:

ज़रूरी नहीं है

टाइप:

लागू नहीं

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

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

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

विशेषताएं

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

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

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

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

<Prefix>prefix_string</Prefix>

डिफ़ॉल्ट:

लागू नहीं

मौजूद होना:

ज़रूरी नहीं है

टाइप:

स्ट्रिंग

जब आपको <Scope> में दी गई वैल्यू के बजाय, अपनी वैल्यू तय करनी हो , तब <Scope> के बजाय इस वैल्यू का इस्तेमाल करें. अगर तय किया जाता है, तो <Prefix> कैश मेमोरी में लिखी गई एंट्री के लिए, कैश मेमोरी की कुंजी की वैल्यू के पहले जोड़ा जाता है. A <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, UTC टाइम ज़ोन में 24 घंटे की घड़ी के हिसाब से घंटे दिखाता है. उदाहरण के लिए, 14:30:00 का मतलब है दोपहर के 2:30.

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

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

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

<Scope> एलिमेंट

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

<Scope>scope_enumeration</Scope>

डिफ़ॉल्ट:

"एक्सक्लूसिव"

मौजूद होना:

ज़रूरी नहीं है

टाइप:

स्ट्रिंग

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

orgName__envName__apiProxyName__deployedRevisionNumber__proxy|TargetName__ [ serializedCacheKey ]

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

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

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

Global

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

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

Application

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

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

Proxy

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

कैश मेमोरी की कुंजी के पहले, 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>source_variable</Source>

डिफ़ॉल्ट:

लागू नहीं

मौजूद होना:

ज़रूरी है

टाइप:

स्ट्रिंग

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

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

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

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

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

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

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

गड़बड़ी के कोड

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

रनटाइम की गड़बड़ियां

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

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

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

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

गड़बड़ी का नाम वजह ठीक करें
InvalidCacheResourceReference यह गड़बड़ी तब होती है, जब पॉप-अप कैश नीति में <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>