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

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

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

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

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

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

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

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

با استفاده از سیاست Response Cache ، می‌توانید به صورت اختیاری این کلید حافظه پنهان را با مقادیری از هدر Accept پاسخ اضافه کنید.

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

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

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

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

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

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

<KeyFragment ref="variable_name"/>

برای مثال، برای اینکه مقدار کلید cache شامل نوع محتوا (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 ختم می‌شود.

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

کلیدهای حافظه پنهان (cache keys) مشتق شده از پارامترهای پرس و جو (query parameters)

با استفاده از متغیرهایی مانند request.queryparam.<queryparam_name> و request.querystring، می‌توانید یک کلید حافظه پنهان (cache key) را طوری پیکربندی کنید که کلید شامل بخش‌هایی از رشته جستجوی یک درخواست باشد. برای مثال، 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>

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

سایر_قطعات_کلیدی __value1__value2

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

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

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

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

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

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

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

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

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

پیکربندی نتیجه
<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
،

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

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

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

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

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

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

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

با استفاده از سیاست Response Cache ، می‌توانید به صورت اختیاری این کلید حافظه پنهان را با مقادیری از هدر Accept پاسخ اضافه کنید.

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

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

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

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

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

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

<KeyFragment ref="variable_name"/>

برای مثال، برای اینکه مقدار کلید cache شامل نوع محتوا (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 ختم می‌شود.

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

کلیدهای حافظه پنهان (cache keys) مشتق شده از پارامترهای پرس و جو (query parameters)

با استفاده از متغیرهایی مانند request.queryparam.<queryparam_name> و request.querystring، می‌توانید یک کلید حافظه پنهان (cache key) را طوری پیکربندی کنید که کلید شامل بخش‌هایی از رشته جستجوی یک درخواست باشد. برای مثال، 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>

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

سایر_قطعات_کلیدی __value1__value2

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

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

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

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

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

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

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

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

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

پیکربندی نتیجه
<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