مثال: ذخیره کردن در حافظه نهان با هدف عمومی

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

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

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

کد نمونه در این موضوع براساس نمونه کارگزار نیابتی OAuth برون‌سپاری در Github است (به فهرست نمونه‌ها مراجعه کنید). این نمونه از خط‌مشی ذخیره کردن برای ذخیره کردن کد دسترسی OAuth برای استفاده مجدد در چندین تماس خروجی استفاده می‌کند.

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

در مثال زیر، یک نمودار دسترسی OAuth بااستفاده از خط‌مشی PopulateCache در حافظه نهان نوشته می‌شود. نشان OAuth برای درخواست‌های بعدی توسط خط‌مشی LookupCache بازیابی می‌شود. پس‌از انقضای رمز دسترسی، از JavaScript برای بازیابی رمز دسترسی جدید استفاده می‌شود که به‌نوبه خود توسط خط‌مشی 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>