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

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

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

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

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

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

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

حافظه پنهان را پر کنید

از سیاست PopulateCache برای نوشتن داده‌ها در حافظه پنهان استفاده کنید. این مثال یک توکن دسترسی OAuth را در حافظه پنهان می‌نویسد. برای اطلاعات مرجع در مورد سیاست، به سیاست Populate Cache مراجعه کنید.

<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());

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

جستجوی داده‌های ذخیره‌شده در حافظه پنهان

شما می‌توانید مقادیر ذخیره‌شده در حافظه پنهان (cache) را با استفاده از سیاست 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>