उदाहरण: अलग-अलग कामों के लिए इस्तेमाल की जाने वाली कैश मेमोरी

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

डेटा को सामान्य तरीके से सेव करने वाली कैश मेमोरी में डेटा सेव करने के लिए, नीतियों का इस्तेमाल किया जा सकता है. ऐसा करके, डेटा को तेज़ी से वापस पाया जा सकता है. इन नीतियों का इस्तेमाल करके, आपका प्रॉक्सी सर्वर, रनटाइम में कैश मेमोरी में सेव किए गए डेटा को स्टोर और वापस पा सकता है:

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

इस विषय में दिया गया सैंपल कोड, GitHub पर मौजूद आउटबाउंड OAuth सैंपल प्रॉक्सी पर आधारित है (सैंपल की सूची देखें). यह सैंपल, OAuth ऐक्सेस टोकन को स्टोर करने के लिए कैश मेमोरी की नीति का इस्तेमाल करता है. ऐसा इसलिए किया गया है, ताकि उसे कई आउटबाउंड कॉल में फिर से इस्तेमाल किया जा सके.

हर तरह की नीति को एक्सएमएल स्कीमा (.xsd) से तय किया जाता है. रेफ़रंस के लिए, नीति के स्कीमा GitHub पर उपलब्ध हैं.

यहां दिए गए उदाहरण में, Populate आर्थिक नीति का इस्तेमाल करके, कैश मेमोरी में OAuth ऐक्सेस टोकन लिखा गया है. बाद में किए गए अनुरोधों के लिए, OAuth टोकन को lookupकैश नीति की मदद से वापस लाया जाता है. ऐक्सेस टोकन की समयसीमा खत्म होने के बाद, JavaScript का इस्तेमाल करके एक नया ऐक्सेस टोकन हासिल किया जाता है. इस टोकन को Populate आर्थिक नीति की मदद से, कैश मेमोरी में सेव किया जाता है.

कैश मेमोरी में जानकारी भरें

कैश मेमोरी में डेटा सेव करने के लिए, Populatecache नीति का इस्तेमाल करें. इस उदाहरण में, कैश मेमोरी में OAuth ऐक्सेस टोकन लिखा गया है. नीति के रेफ़रंस की जानकारी के लिए, कैश मेमोरी से जुड़ी नीति को भरें देखें.

<PopulateCache name="token-cache">
    <!-- The cache to write to. -->
    <CacheResource>mycache</CacheResource>
    <!-- The source of the data, a variable containing the value. -->
    <Source>twitter-translate.apiAccessToken</Source>
    <!-- An enumeration representing a prefix for namespace scope. -->
    <Scope>Exclusive</Scope>
    <!-- A unique pointer (a flow variable value) to the data. Use this later to retrieve it. -->
    <CacheKey>
        <KeyFragment>apiAccessToken</KeyFragment>
        <KeyFragment ref="request.queryparam.client_id"></KeyFragment>
    </CacheKey>
    <!-- Entries placed into the cache with this policy will expire after 600 seconds. -->
    <ExpirySettings>
        <TimeoutInSec>600</TimeoutInSec>
    </ExpirySettings>
</PopulateCache>

वैरिएबल में डेटा भरने के लिए नीतियों या कोड का इस्तेमाल किया जा सकता है. इस उदाहरण में दिया गया Source वैरिएबल, इस JavaScript कॉल से पॉप्युलेट किया गया है: context.setVariable('twitter-translate.apiAccessToken', getAccessToken());

कैश कुंजियों के बारे में ज़्यादा जानने के लिए, कैश कुंजी के साथ काम करना देखें.

कैश मेमोरी में सेव किया गया डेटा देखें

कैश मेमोरी की नीति की मदद से, कैश मेमोरी में सेव की गई वैल्यू को वापस लाया जा सकता है. नीचे दी गई lookupcache नीति mycache से मिली वैल्यू को पढ़ती है और वैल्यू को twitter-translate.apiAccessToken वैरिएबल में लिखती है. नीति के रेफ़रंस की जानकारी के लिए, lookupcache नीति देखें.

<LookupCache name="token-cache">
    <!-- The cache to read from. -->
    <CacheResource>mycache</CacheResource>
    <!-- Where to assign the retrieved value - here, a variable. -->
    <AssignTo>twitter-translate.apiAccessToken</AssignTo>
    <!-- An enumeration representing a prefix for namespace scope. -->
    <Scope>Exclusive</Scope>
    <!-- The unique pointer (a flow variable value) that was used to store the data in the cache. -->

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

कैश मेमोरी को अमान्य करें

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

<InvalidateCache name="InvalidateMyCache">
    <!-- The cache to invalidate. -->
    <CacheResource>test-cache</CacheResource>
    <!-- An enumeration representing a prefix for namespace scope. -->
    <Scope>Exclusive</Scope>
    <!-- Fragments constructing the unique pointer used when 
        the data was put into the cache. -->
    <CacheKey>
        <KeyFragment>apiAccessToken</KeyFragment>
        <KeyFragment ref="request.queryparam.client_id" />
    </CacheKey>
    <PurgeChildEntries>true</PurgeChildEntries>
</InvalidateCache>