کار با کلیدهای کش

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

هنگام استفاده از سیاست‌های حافظه پنهان، با پیکربندی کلیدهای حافظه پنهان، از منحصربه‌فرد بودن کلیدهای مقدار حافظه پنهان اطمینان حاصل می‌کنید. یک کلید حافظه پنهان، همراه با مقادیر دیگری که می‌توانید پیکربندی کنید، راهی قابل اعتماد برای دریافت همان داده‌هایی که وارد کرده‌اید به شما می‌دهد. شما از کلیدهای حافظه پنهان با خط‌مشی Populate Cache ، سیاست LookupCache ، سیاست InvalidateCache و سیاست Cache پاسخ استفاده می‌کنید.

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

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

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

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

دامنه | پیشوند__keyfragment [ __keyfragment ]

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

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

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

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

به عنوان مثال، پیکربندی زیر مقدار hello__world را برای استفاده در کلید کش ایجاد می کند:

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

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

<KeyFragment ref="variable_name"/>

به عنوان مثال، برای اینکه مقدار کلید کش حاوی Content-Type پیام درخواست باشد، به صورت زیر عمل کنید:

<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، می‌توانید یک کلید حافظه پنهان را طوری پیکربندی کنید که کلید شامل بخش‌هایی از رشته جستجوی درخواست باشد. به عنوان مثال، URL زیر از دو پارامتر پرس و جو استفاده می کند - 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> را مشخص کنید. شما می توانید مقدار <Scope> را با استفاده از عنصر <Prefix> لغو کنید و بنابراین یک مقدار سفارشی برای فاصله نام مشخص کنید.

به عنوان مثال، مقدار <Scope> "Global" - وسیع ترین دامنه - نشان دهنده نام سازمان و محیط است. بنابراین اگر پروکسی شما در سازمانی به نام "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]

به عنوان مثال، یک کلید حافظه پنهان ایجاد شده با استفاده از مقدار Exclusive برای <Scope> به شکل زیر است:

apifactory__test__weatherapi__16__default__apiAccessToken