مثال: ذخیره سازی با هدف عمومی

شما در حال مشاهده اسناد Apigee Edge هستید.
به مستندات Apigee X بروید .
اطلاعات

برای بازیابی سریع‌تر می‌توانید از خط‌مشی‌ها برای ذخیره داده‌ها در یک کش عمومی برای بازیابی استفاده کنید. با استفاده از خط مشی های زیر، پروکسی شما می تواند داده های کش شده را در زمان اجرا ذخیره و بازیابی کند:

این خط‌مشی‌ها برای ذخیره کلی داده‌های مورد استفاده توسط پراکسی‌های شما طراحی شده‌اند.

کد نمونه در این مبحث بر اساس پراکسی نمونه Outbound OAuth در Github است (به لیست نمونه ها مراجعه کنید). این نمونه از خط مشی کش برای ذخیره یک نشانه دسترسی OAuth برای استفاده مجدد در چندین تماس خروجی استفاده می کند.

هر نوع خط مشی توسط یک طرح XML (xsd.) تعریف می شود. برای مرجع، طرح‌های خط‌مشی در GitHub در دسترس هستند.

در مثال زیر، یک نشانه دسترسی OAuth با استفاده از یک خط مشی PopulateCache در حافظه پنهان نوشته شده است. نشانه OAuth برای درخواست های بعدی توسط یک خط مشی LookupCache بازیابی می شود. هنگامی که نشانه دسترسی منقضی می شود، جاوا اسکریپت برای بازیابی یک نشانه دسترسی جدید استفاده می شود که به نوبه خود توسط خط مشی PopulateCache ذخیره می شود.

کش را پر کنید

از سیاست 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 در این مثال با فراخوانی جاوا اسکریپت زیر پر شده است: context.setVariable('twitter-translate.apiAccessToken', getAccessToken());

برای اطلاعات بیشتر در مورد کلیدهای حافظه پنهان، به کار با کلیدهای حافظه پنهان مراجعه کنید.

جستجوی داده های حافظه پنهان

می توانید مقادیر کش شده را با خط مشی LookupCache بازیابی کنید. خط مشی 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>

کش را باطل کنید

کش را می توان به طور صریح با تعیین یک هدر HTTP باطل کرد. هنگامی که درخواستی که حاوی هدر HTTP مشخص شده دریافت می شود، کش پاک می شود. برای اطلاعات مرجع خط مشی، به سیاست InvalidateCache مراجعه کنید.

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