کار کردن با کلیدهای حافظه نهان

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

هنگام استفاده از خط‌مشی‌های حافظه نهان، با پیکربندی کلیدهای حافظه نهان، یکتایی کلیدهای مقدار حافظه نهان را تضمین می‌کنید. کلید حافظه نهان، به‌همراه مقادیر دیگری که می‌توانید پیکربندی کنید، روشی مطمئن برای دریافت همان داده‌هایی که وارد کرده‌اید دراختیارتان قرار می‌دهد. از کلیدهای حافظه نهان با خط‌مشی «پر کردن حافظه نهان»، خط‌مشی «جستجوی حافظه نهان»، خط‌مشی «نامعتبر کردن حافظه نهان»، و خط‌مشی «حافظه نهان پاسخ» استفاده می‌کنید.

مقادیر عناصر پیکربندی -- <CacheKey>/<KeyFragment>،‏ <Scope>، و <Prefix> -- به‌هم متصل می‌شوند تا شناسه‌ای ایجاد کنند که با مقداری که در حافظه نهان قرار می‌دهید مرتبط باشد. از همین پیکربندی برای بازیابی مقدار استفاده می‌کنید.

با عناصر پیکربندی خط‌مشی حافظه نهان زیر، می‌توانید کلید حافظه نهان ایجاد کنید:

عنصر پیکربندی حافظه نهان شرح
<CacheKey> / <KeyFragment> از <CacheKey> <KeyFragment> عنصر ترکیبی برای مشخص کردن شناسه یکتا برای ورودی‌های حافظه نهان استفاده کنید. مقادیر KeyFragment می‌تواند ثابت‌های نوشتاری یا مقادیر تنظیم‌شده از متغیرها باشد.
‫<Scope> یا <Prefix> از عناصر <Scope> یا <Prefix> برای فضای نام بیشتر کلیدهای حافظه نهان استفاده کنید. ‫<Scope> فهرستی از مقادیر ازپیش‌تعریف‌شده را برمی‌شمارد. عنصر <Prefix> عنصر <Scope> را با مقدار انتخابی خودتان ملغی می‌کند.

این مقادیر به‌شکل زیر به‌هم پیوند داده می‌شوند، با <Scope> یا <Prefix> مقادیر جداشده از مقادیر KeyFragment با دو خط زیر. چندین مقدار KeyFragment نیز با دو خط زیرین از هم جدا می‌شوند.

scope | prefix__keyfragment[__keyfragment]

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

استفاده از <CacheKey>

عنصر <CacheKey> پیکربندی می‌کند که Edge چگونه برای هر ورودی حافظه نهان که ایجاد می‌کند یک شناسه یکتا (کلید) ایجاد کند. وقتی Edge مقدار ذخیره‌شده در حافظه نهان را بازیابی می‌کند، از کلید cache برای مکان‌یابی مقدار صحیح استفاده می‌کند. در خط‌مشی ResponseCache، یک پیکربندی کلید را برای هر دو مورد ذخیره در حافظه نهان و بازیابی تعریف می‌کند. در خط‌مشی‌های PopulateCache و LookupCache، هر خط‌مشی باید عناصر <CacheKey> یکسانی داشته باشد تا مطمئن شویم مقداری که از حافظه نهان بازیابی می‌شود با مقداری که در آنجا قرار داده شده است مطابقت دارد.

عنصر <CacheKey> می‌تواند شامل چندین عنصر <KeyFragment> باشد. در زمان اجرا، مقادیر مشخص‌شده توسط عناصر <KeyFragment> با دو خط زیر بین آن‌ها در به‌هم متصل می‌شوند تا بخشی از کلید حافظه نهان را تشکیل دهند.

برای مثال، پیکربندی زیر مقدار hello__world را برای استفاده در کلید حافظه نهان ایجاد می‌کند:

<CacheKey>
    <KeyFragment>hello</KeyFragment>
    <KeyFragment>world</KeyFragment>
<CacheKey>

همچنین می‌توانید با ارجاع دادن به متغیر در عنصر <KeyFragment>، همان‌طور که در اینجا نشان داده شده است، از مقادیر متغیر در کلید حافظه نهان استفاده کنید:

<KeyFragment ref="variable_name"/>

برای مثال، برای اینکه مقدار کلید حافظه نهان «نوع محتوای» پیام درخواست را دربرگیرد، به‌صورت زیر عمل کنید:

<KeyFragment ref="request.header.Content-Type"/>

در پیکربندی زیر، متغیر request.header.Content-Type مقدار application/json را دارد.

<CacheKey>
  <KeyFragment>apiAccessToken</KeyFragment>
  <KeyFragment ref="request.header.Content-Type" />
  <KeyFragment>bar</KeyFragment>
</CacheKey>

این نتیجه کلید حافظه نهانی است که به apiAccessToken__application/json__bar ختم می‌شود.

برای فهرستی از متغیرهایی که می‌توانید استفاده کنید، به مرجع متغیرها مراجعه کنید.

کلیدهای حافظه نهان برگرفته از پارامترهای پُرسمان

بااستفاده از متغیرهایی مثل request.queryparam.<queryparam_name> و request.querystring، می‌توانید کلید حافظه نهان را به‌گونه‌ای پیکربندی کنید که کلید شامل بخش‌هایی از رشته پُرسمان درخواست باشد. برای مثال، نشانی وب زیر از دو پارامتر پُرسمان -- param1 و param2 -- استفاده می‌کند که می‌توانید در کلید حافظه نهان خود استفاده کنید:

http://myaccount.apigee.net/mydata?param1=value1&param2=value2

عنصر <CacheKey> شما می‌تواند این مقادیر را با پیکربندی‌ای مانند پیکربندی زیر ترکیب کند:

<CacheKey>
    <KeyFragment ref="request.queryparam.param1" />
    <KeyFragment ref="request.queryparam.param2" />
<CacheKey>

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

other_key_parts__value1__value2

به‌خاطر داشته باشید که وقتی از متغیرها برای درج مقادیر از پارامترها استفاده می‌کنید، مقادیر به ترتیبی که عنصر <KeyFragment> پیشنهاد می‌دهد به‌هم متصل می‌شوند. همچنین، توجه داشته باشید که Edge فقط از مقادیری استفاده می‌کند که به‌طور خاص با عناصر <KeyFragment> به آن‌ها ارجاع می‌دهید. اگر فهرست پارامترهای پُرسمان درخواست شما متفاوت باشد، تغییرات در کلید حافظه نهان لحاظ نخواهد شد.

گزینه دیگر استفاده از متغیر request.querystring است که کل رشته پارامترها را به‌صورت واقعی به‌عنوان بخشی از کلید حافظه نهان درج می‌کند. به‌خاطر داشته باشید که اگرچه این روش همه پارامترها را درنظر می‌گیرد، اگر ترتیب پارامترها از یک درخواست به درخواست دیگر متفاوت باشد، کلید متفاوت خواهد بود. به‌عبارت دیگر، param1=value1&param2=value2 و param2=value2&param1=value1 منجر به مقدار کلید حافظه نهان یکسان نمی‌شوند.

برای فهرستی از متغیرهایی که می‌توانید استفاده کنید، به مرجع متغیرها مراجعه کنید.

استفاده از <Scope> و <Prefix>

عناصر <Scope> و <Prefix> روشی برای افزودن پیشوند فضای نام به کلید ارائه می‌دهند. مقادیری که نشان می‌دهند به کلید حافظه نهان شما اضافه می‌شود.

عنصر <Scope> به‌طور پیش‌فرض استفاده می‌شود. این یک شمارش است که مقادیر آن از گسترده تا محدود متغیر است و محدودترین مقدار به‌عنوان پیش‌فرض درنظر گرفته می‌شود. این مقدار پیش‌فرض استفاده می‌شود مگراینکه مقدار دیگری را مشخص کنید یا مقدار عنصر <Prefix> را مشخص کنید. می‌توانید بااستفاده از عنصر <Prefix> مقدار <Scope> را ملغی کنید و بنابراین مقدار سفارشی برای فضای نام مشخص کنید.

برای مثال، مقدار <Scope> «جهانی» -- گسترده‌ترین محدوده -- نشان‌دهنده نام سازمان و محیط است. بنابراین اگر پراکسی شما در سازمانی به‌نام «mycompany» و محیطی به‌نام «prod» مستقر شده باشد، مقدار پیش‌افزوده حاصل به‌صورت زیر خواهد بود:

پیکربندی نتیجه
<Scope>Global</Scope> mycompany__prod__.

اگر از «دامنه سراسری» با کلید حافظه نهان تعریف‌شده در بالا استفاده می‌کنید، نتیجه به‌صورت زیر است: به‌صورت زیر است:

پیکربندی نتیجه
<Scope>Global</Scope>
<CacheKey>
    <KeyFragment>hello</KeyFragment>
    <KeyFragment>world</KeyFragment>
<CacheKey>
mycompany__prod__hello__world.

همان‌طور که در خط‌مشی LookupCache توضیح داده شده است، محدوده می‌تواند برای افزایش اختصاصی بودن از «سراسری» به «انحصاری» پیکربندی شود. «محدوده انحصاری» خاص‌ترین نوع محدوده است و بنابراین کمترین خطر تداخل فضای نام را در یک حافظه نهان معین نشان می‌دهد. هر ورودی حافظه نهان با حوزه «انحصاری» به‌شکل زیر پیشوندگذاری می‌شود:

orgName__envName__apiProxyName__deployedRevisionNumber__proxy|TargetName__[serializedCacheKey]

برای مثال، کلید حافظه نهان ایجادشده از مقدار «انحصاری» برای <Scope> به‌شکل زیر خواهد بود:

apifactory__test__weatherapi__16__default__apiAccessToken