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

आपको Apigee Edge दस्तावेज़ दिख रहा है.
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है इस पेज पर जाएं Apigee X दस्तावेज़.
जानकारी

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

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

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

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

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

<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>

&lt;PopulateCache&gt; एट्रिब्यूट

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

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

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

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

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

किसी नीति के काम न करने पर, गड़बड़ी दिखाने के लिए false पर सेट करें. यह उम्मीद है व्यवहार की जानकारी देने वाला डेटा.

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

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

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

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

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

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

गलत बहिष्कृत

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

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

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

लागू नहीं

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

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

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

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

कैश कुंजियों का साइज़ 2 केबी से ज़्यादा नहीं होना चाहिए.

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

डिफ़ॉल्ट:

लागू नहीं

मौजूदगी:

ज़रूरी है

टाइप:

लागू नहीं

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

रनटाइम पर, <KeyFragment> वैल्यू को, वैल्यू के पहले जोड़े गए <Scope> एलिमेंट वैल्यू या <Prefix> वैल्यू. उदाहरण के लिए, परिणामों की एक कैश कुंजी UserToken__apiAccessToken__&lt;value_of_client_id&gt;:

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

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

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

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

अगर इस नीति (और अपने संबंधित lookupकैश और अमान्यateकैश नीतियां) शामिल की गई 'शेयर की गई कैश मेमोरी' सुविधा का इस्तेमाल कर रही है.

<CacheResource>cache_to_use</CacheResource>

डिफ़ॉल्ट:

लागू नहीं

मौजूदगी:

वैकल्पिक

टाइप:

स्ट्रिंग

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

&lt;CacheKey&gt;/&lt;KeyFragment&gt; एलिमेंट

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

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

डिफ़ॉल्ट:

लागू नहीं

मौजूदगी:

वैकल्पिक

टाइप:

लागू नहीं

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

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

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

विशेषताएं

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

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

&lt;CacheKey&gt;/&lt;Prefix&gt; एलिमेंट

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

<Prefix>prefix_string</Prefix>

डिफ़ॉल्ट:

लागू नहीं

मौजूदगी:

वैकल्पिक

टाइप:

स्ट्रिंग

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

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

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

इस नीति से पता चलता है कि कैश मेमोरी में सेव की गई एंट्री की समयसीमा कब खत्म होनी चाहिए. टास्क कब शुरू होगा मौजूद है, <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 एट्रिब्यूट का इस्तेमाल करने पर नीति नाम वाले कॉन्टेक्स्ट वैरिएबल से समयसीमा खत्म होने वाली वैल्यू को फिर से पाएं. अगर वैरिएबल की वैल्यू तय नहीं की गई है, इस नीति में, चाइल्ड एलिमेंट की लिटरल टेक्स्ट वैल्यू का इस्तेमाल किया जाता है.

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

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

<Scope>scope_enumeration</Scope>

डिफ़ॉल्ट:

"खास"

मौजूदगी:

वैकल्पिक

टाइप:

स्ट्रिंग

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

orgName__envName__apiProxyName__deployedRevisionNumber__proxy|TargetName__ [ serializedCacheKey ]

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

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

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

Global

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

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

Application

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

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

Proxy

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

कैश कुंजी को फ़ॉर्म में पहले से जोड़ा गया है 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
.

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

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

<Source>source_variable</Source>

डिफ़ॉल्ट:

लागू नहीं

मौजूदगी:

ज़रूरी है

टाइप:

स्ट्रिंग

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

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

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

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

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

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

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

गड़बड़ी कोड

This section describes the fault codes and error messages that are returned and fault variables that are set by Edge when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.

Runtime errors

These errors can occur when the policy executes.

Fault code HTTP Status Occurs when
policies.populatecache.EntryCannotBeCached 500 An entry cannot be cached. The message object being cached is not an instance of a class that is Serializable.

Deployment errors

These errors can occur when you deploy a proxy containing this policy.

Error name Cause Fix
InvalidCacheResourceReference This error occurs if the <CacheResource> element in the PopulateCache policy is set to a name that does not exist in the environment where the API proxy is being deployed.
CacheNotFound The cache specified in the <CacheResource> element does not exist.

Fault variables

These variables are set when this policy triggers an error. For more information, see What you need to know about policy errors.

Variables Where Example
fault.name="fault_name" fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name = "EntryCannotBeCached"
populatecache.policy_name.failed policy_name is the user-specified name of the policy that threw the fault. populatecache.POP-CACHE-1.failed = true

Example error response

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

Example fault rule

<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>