شما در حال مشاهده مستندات Apigee Edge هستید.
به مستندات Apigee X مراجعه کنید . اطلاعات
نحوهی نوشتن مقادیر ذخیرهشده در حافظهی نهان (cache) را در زمان اجرا پیکربندی میکند.
سیاست Populate Cache برای نوشتن ورودیها در یک حافظه پنهان عمومی کوتاهمدت طراحی شده است. این سیاست همراه با سیاست Lookup Cache (برای خواندن ورودیهای حافظه پنهان) و سیاست Invalidate Cache (برای نامعتبر کردن ورودیها) استفاده میشود.
برای ذخیره پاسخهای منابع backend، به سیاست ذخیره پاسخ (Response Cache) مراجعه کنید.
مرجع عنصر
در زیر عناصری که میتوانید در این سیاست پیکربندی کنید، فهرست شدهاند.
<PopulateCache async="false" continueOnError="false" enabled="true" name="Populate-Cache-1">
<DisplayName>Populate Cache 1</DisplayName>
<Properties/>
<CacheKey>
<Prefix/>
<KeyFragment ref=""/>
</CacheKey>
<!-- Omit this element if you're using the included shared cache. -->
<CacheResource/>
<Scope>Exclusive</Scope>
<ExpirySettings>
<TimeoutInSeconds>300</TimeoutInSeconds>
</ExpirySettings>
<Source>flowVar</Source>
</PopulateCache>ویژگیهای <PopulateCache>
جدول زیر ویژگی هایی را توصیف می کند که برای همه عناصر اصلی خط مشی مشترک هستند:
| صفت | توضیحات | پیش فرض | حضور |
|---|---|---|---|
name | نام داخلی سیاست. مقدار مشخصه در صورت تمایل، از عنصر | N/A | مورد نیاز |
continueOnError | برای بازگرداندن خطا در صورت شکست خط مشی، روی روی | نادرست | اختیاری |
enabled | برای اجرای خط مشی روی برای خاموش کردن خط مشی، روی | درست است | اختیاری |
async | این ویژگی منسوخ شده است. | نادرست | منسوخ شده است |
عنصر <DisplayName>
علاوه بر ویژگی name برای برچسبگذاری خطمشی در ویرایشگر پروکسی رابط کاربری مدیریت با نامی متفاوت و به زبان طبیعی، از آن استفاده کنید.
<DisplayName>Policy Display Name</DisplayName>
| پیش فرض | N/A اگر این عنصر را حذف کنید، از مقدار ویژگی |
|---|---|
| حضور | اختیاری |
| تایپ کنید | رشته |
عنصر <CacheKey>
یک اشارهگر منحصر به فرد به یک قطعه داده ذخیره شده در حافظه پنهان پیکربندی میکند.
کلیدهای حافظه نهان (Cache Keys) به اندازه ۲ کیلوبایت محدود شدهاند.
<CacheKey> <Prefix>string</Prefix> <KeyFragment ref="variable_name" /> <KeyFragment>literal_string</KeyFragment> </CacheKey>
پیشفرض: | ناموجود |
حضور: | مورد نیاز |
نوع: | ناموجود |
<CacheKey> نام هر قطعه داده ذخیره شده در حافظه پنهان را میسازد.
در زمان اجرا، مقادیر <KeyFragment> یا با مقدار عنصر <Scope> یا با مقدار <Prefix> اضافه میشوند. برای مثال، نتیجهی زیر، کلید کش UserToken__apiAccessToken__ <value_of_client_id> است:
<CacheKey>
<Prefix>UserToken</Prefix>
<KeyFragment>apiAccessToken</KeyFragment>
<KeyFragment ref="request.queryparam.client_id" />
</CacheKey> شما از عنصر <CacheKey> به همراه <Prefix> و <Scope> استفاده میکنید. برای اطلاعات بیشتر، به بخش کار با کلیدهای حافظه پنهان مراجعه کنید.
عنصر <CacheResource>
حافظه پنهانی را که پیامها باید در آن ذخیره شوند، مشخص میکند.
اگر این خطمشی (و خطمشیهای LookupCache و InvalidateCache مربوطه) از حافظه پنهان مشترک استفاده میکنند، این عنصر را کاملاً حذف کنید.
<CacheResource>cache_to_use</CacheResource>
پیشفرض: | ناموجود |
حضور: | اختیاری |
نوع: | رشته |
برای اطلاعات بیشتر در مورد پیکربندی حافظههای پنهان، به ایجاد و ویرایش حافظه پنهان محیطی مراجعه کنید.
عنصر <CacheKey>/<KeyFragment>
مقداری را مشخص میکند که باید در کلید حافظه پنهان (cache key) گنجانده شود و یک فضای نام برای تطبیق درخواستها با پاسخهای ذخیره شده در حافظه پنهان ایجاد میکند.
<KeyFragment ref="variable_name"/> <KeyFragment>literal_string</KeyFragment>
پیشفرض: | ناموجود |
حضور: | اختیاری |
نوع: | ناموجود |
این میتواند یک کلید (یک نام استاتیک که شما ارائه میدهید) یا یک مقدار (یک ورودی پویا که با ارجاع به یک متغیر تنظیم میشود) باشد. تمام قطعات مشخص شده (به علاوه پیشوند) با هم ترکیب میشوند تا کلید حافظه پنهان را ایجاد کنند.
<KeyFragment>apiAccessToken</KeyFragment> <KeyFragment ref="request.queryparam.client_id" />
شما از عنصر <KeyFragment> به همراه <Prefix> و <Scope> استفاده میکنید. برای اطلاعات بیشتر، به بخش کار با کلیدهای حافظه پنهان مراجعه کنید.
ویژگیها
| ویژگی | نوع | پیشفرض | مورد نیاز | توضیحات |
|---|---|---|---|---|
| مرجع | رشته | خیر | متغیری که مقدار از آن گرفته میشود. اگر این عنصر حاوی یک مقدار تحتاللفظی باشد، نباید استفاده شود. |
عنصر <CacheKey>/<Prefix>
مقداری را برای استفاده به عنوان پیشوند کلید حافظه پنهان مشخص میکند.
<Prefix>prefix_string</Prefix>
پیشفرض: | ناموجود |
حضور: | اختیاری |
نوع: | رشته |
وقتی میخواهید مقدار خودتان را به جای یک مقدار شمارشی <Scope> مشخص کنید، از این مقدار به جای <Scope> استفاده کنید. در صورت تعریف، <Prefix> مقدار کلید cache را برای ورودیهای نوشته شده در cache به ابتدای آن اضافه میکند. مقدار عنصر <Prefix> مقدار عنصر <Scope> را لغو میکند.
شما از عنصر <Prefix> به همراه <CacheKey> و <Scope> استفاده میکنید. برای اطلاعات بیشتر، به بخش کار با کلیدهای حافظه پنهان مراجعه کنید.
عنصر <ExpirySettings>
مشخص میکند که یک ورودی کش چه زمانی باید منقضی شود. در صورت وجود، <TimeoutInSeconds> هر دو <TimeOfDay> و <ExpiryDate> را لغو میکند.
<ExpirySettings> <!-- use exactly one of the following child elements --> <TimeoutInSeconds ref="duration_variable">seconds_until_expiration</TimeoutInSeconds> <ExpiryDate ref="date_variable">expiration_date</ExpiryDate> <TimeOfDay ref="time_variable">expiration_time</TimeOfDay> </ExpirySettings>
پیشفرض: | ناموجود |
حضور: | مورد نیاز |
نوع: | ناموجود |
عناصر فرزند <ExpirySettings>
دقیقاً از یک عنصر فرزند استفاده کنید. جدول زیر توضیحی در مورد عناصر فرزند <ExpirySettings> ارائه میدهد:
| عنصر فرزند | توضیحات |
|---|---|
<TimeoutInSeconds> | تعداد ثانیههایی که پس از آن یک ورودی کش باید منقضی شود. <ExpirySettings> <TimeoutInSeconds ref="var-containing-duration">expiry</TimeoutInSeconds> </ExpirySettings> این عنصر جایگزین عنصر |
<ExpiryDate> | تاریخی را که یک ورودی کش باید منقضی شود، مشخص میکند. رشتهای به شکل <ExpirySettings> <ExpiryDate ref="var-containing-date">expiry</ExpiryDate> </ExpirySettings> اگر تاریخ مشخص شده مربوط به گذشته باشد، این خطمشی حداکثر زمان ماندگاری را برای ورودی ذخیرهشده در حافظه پنهان اعمال میکند. این حداکثر ۳۰ روز است. |
<TimeOfDay> | زمانی از روز را مشخص میکند که یک ورودی کش باید در آن منقضی شود. رشتهای به شکل <ExpirySettings> <TimeOfDay ref="var-containing-time">expiry</TimeOfDay> </ExpirySettings> |
شما باید فقط یکی از عناصر فرزند ممکن را مشخص کنید. اگر چندین عنصر را مشخص کنید، ترتیب اولویت به صورت زیر است: TimeoutInSeconds ، ExpiryDate ، TimeOfDay .
با هر یک از عناصر فرزند فوق از <ExpirySettings> ، اگر ویژگی ref اختیاری را روی عنصر فرزند مشخص کنید، این سیاست مقدار انقضا را از متغیر context نامگذاری شده بازیابی میکند. اگر متغیر تعریف نشده باشد، این سیاست از مقدار متنی تحتاللفظی عنصر فرزند استفاده میکند.
عنصر <scope>
شمارشی (Enumeration) برای ساخت پیشوند برای کلید حافظه پنهان (cache key) استفاده میشود، زمانی که عنصر <Prefix> در عنصر <CacheKey> ارائه نشده باشد.
<Scope>scope_enumeration</Scope>
پیشفرض: | «اختصاصی» |
حضور: | اختیاری |
نوع: | رشته |
تنظیم <Scope> یک کلید cache را تعیین میکند که مطابق با مقدار <Scope> اضافه میشود. برای مثال، وقتی scope روی Exclusive تنظیم شده باشد، یک کلید cache به شکل زیر خواهد بود:
orgName__envName__apiProxyName__deployedRevisionNumber__proxy|TargetName__ [ serializedCacheKey ]
اگر عنصر <Prefix> در <CacheKey> وجود داشته باشد، جایگزین مقدار عنصر <Scope> میشود. مقادیر معتبر شامل موارد شمارشی زیر هستند.
شما از عنصر <Scope> به همراه <CacheKey> و <Prefix> استفاده میکنید. برای اطلاعات بیشتر، به بخش کار با کلیدهای حافظه پنهان مراجعه کنید.
مقادیر قابل قبول
Global | کلید کش (cache key) بین تمام پروکسیهای API مستقر در محیط به اشتراک گذاشته میشود. کلید کش به شکل orgName __ envName __ اضافه میشود. اگر یک ورودی |
Application | نام پروکسی API به عنوان پیشوند استفاده میشود. کلید کش به شکل orgName__envName__apiProxyName اضافه شده است. |
Proxy | پیکربندی ProxyEndpoint به عنوان پیشوند استفاده میشود. کلید کش به شکل orgName__envName__apiProxyName__deployedRevisionNumber__proxyEndpointName اضافه شده است. |
Target | پیکربندی TargetEndpoint به عنوان پیشوند استفاده میشود. کلید حافظه پنهان به شکل orgName__envName__apiProxyName__deployedRevisionNumber__targetEndpointName اضافه شده است. |
Exclusive | پیشفرض. این خاصترین حالت است و بنابراین حداقل خطر تصادم فضای نام را در یک حافظه پنهان مشخص ارائه میدهد. پیشوند یکی از دو شکل زیر است:
کلید حافظه پنهان به شکل orgName__envName__apiProxyName__deployedRevisionNumber__proxyNameITargetName در ابتدای آن قرار داده شده است. برای مثال، رشته کامل ممکن است به این شکل باشد: apifactory__test__weatherapi__16__default__apiAccessToken |
عنصر <منبع>
متغیری را مشخص میکند که مقدار آن باید در حافظه پنهان نوشته شود.
<Source>source_variable</Source>
پیشفرض: | ناموجود |
حضور: | مورد نیاز |
نوع: | رشته |
یادداشتهای استفاده
از این سیاست برای ذخیرهسازی عمومی استفاده کنید. در زمان اجرا، سیاست <PopulateCache> دادهها را از متغیری که در عنصر <Source> مشخص کردهاید، در حافظه پنهانی که در عنصر <CacheResource> مشخص کردهاید، مینویسد. میتوانید از عناصر <CacheKey> ، <Scope> و <Prefix> برای تعیین کلیدی که میتوانید از سیاست <LookupCache> برای بازیابی مقدار استفاده کنید، استفاده کنید. از عنصر <ExpirySettings> برای پیکربندی زمان انقضای مقدار ذخیرهسازی شده استفاده کنید.
ذخیره سازی عمومی با استفاده از سیاست PopulateCache، سیاست LookupCache و سیاست InvalidateCache یا از یک حافظه پنهان که شما پیکربندی میکنید یا از یک حافظه پنهان مشترک که به طور پیشفرض در آن گنجانده شده است، استفاده میکند. در بیشتر موارد، حافظه پنهان مشترک زیربنایی باید نیازهای شما را برآورده کند. برای استفاده از این حافظه پنهان، کافیست عنصر <CacheResource> را حذف کنید.
محدودیتهای حافظه پنهان : محدودیتهای مختلفی برای حافظه پنهان اعمال میشود، مانند نام و اندازه مقدار، تعداد کل حافظههای پنهان، تعداد موارد موجود در حافظه پنهان و تاریخ انقضا.
برای اطلاعات بیشتر در مورد مخزن دادهی زیربنایی، به بخش «بخشهای داخلی حافظهی نهان» مراجعه کنید. برای اطلاعات بیشتر در مورد پیکربندی حافظههای نهان، به بخش «ایجاد و ویرایش حافظهی نهان محیطی» مراجعه کنید.
درباره رمزگذاری حافظه پنهان
Edge برای فضای ابری عمومی: حافظه پنهان (Cache) فقط در سازمانهایی که از PCI و HIPAA پشتیبانی میکنند، رمزگذاری میشود. رمزگذاری برای این سازمانها در طول آمادهسازی سازمان پیکربندی میشود.
کدهای خطا
این بخش کدهای خطا و پیامهای خطایی را که برگردانده میشوند و متغیرهای خطا را که توسط Edge تنظیم میشوند، هنگامی که این خطمشی خطا را راهاندازی میکند، توضیح میدهد. این اطلاعات برای دانستن اینکه آیا در حال توسعه قوانین خطا برای رسیدگی به خطاها هستید، مهم است. برای کسب اطلاعات بیشتر، آنچه را که باید در مورد خطاهای خط مشی و مدیریت خطاها بدانید را ببینید.
خطاهای زمان اجرا
این خطاها ممکن است هنگام اجرای سیاست رخ دهند.
| کد خطا | وضعیت HTTP | زمانی رخ می دهد |
|---|---|---|
policies.populatecache.EntryCannotBeCached | 500 | ورودی را نمی توان کش کرد. شیء پیامی که در حافظه پنهان ذخیره می شود نمونه ای از کلاسی نیست که قابل سریال سازی باشد. |
خطاهای استقرار
این خطاها ممکن است زمانی رخ دهند که یک پروکسی حاوی این خط مشی را مستقر می کنید.
| نام خطا | علت | رفع کنید |
|---|---|---|
InvalidCacheResourceReference | اگر عنصر <CacheResource> در خط مشی PopulateCache روی نامی تنظیم شود که در محیطی که پراکسی API در آن مستقر می شود وجود نداشته باشد، این خطا رخ می دهد. | build |
CacheNotFound | حافظه پنهان مشخص شده در عنصر <CacheResource> وجود ندارد. | build |
متغیرهای خطا
این متغیرها زمانی تنظیم می شوند که این خط مشی خطایی را ایجاد کند. برای اطلاعات بیشتر، به آنچه باید در مورد خطاهای خط مشی بدانید مراجعه کنید.
| متغیرها | کجا | مثال |
|---|---|---|
fault.name=" fault_name " | fault_name نام خطا است، همانطور که در جدول خطاهای Runtime در بالا ذکر شده است. نام خطا آخرین قسمت کد خطا است. | fault.name = "EntryCannotBeCached" |
populatecache. policy_name .failed | policy_name نام سیاستی است که توسط کاربر مشخص شده است که خطا را ایجاد کرده است. | populatecache.POP-CACHE-1.failed = true |
نمونه پاسخ خطا
{ "fault": { "faultstring": "[entry] can not be cached. Only serializable entries are cached.", "detail": { "errorcode": "steps.populatecache.EntryCannotBeCached" } } }
مثال قانون خطا
<FaultRule name="Populate Cache Fault">
<Step>
<Name>AM-EntryCannotBeCached</Name>
<Condition>(fault.name Matches "EntryCannotBeCached") </Condition>
</Step>
<Condition>(populatecache.POP-CACHE-1.failed = true) </Condition>
</FaultRule> شما در حال مشاهده مستندات Apigee Edge هستید.
به مستندات Apigee X مراجعه کنید . اطلاعات
نحوهی نوشتن مقادیر ذخیرهشده در حافظهی نهان (cache) را در زمان اجرا پیکربندی میکند.
سیاست Populate Cache برای نوشتن ورودیها در یک حافظه پنهان عمومی کوتاهمدت طراحی شده است. این سیاست همراه با سیاست Lookup Cache (برای خواندن ورودیهای حافظه پنهان) و سیاست Invalidate Cache (برای نامعتبر کردن ورودیها) استفاده میشود.
برای ذخیره پاسخهای منابع backend، به سیاست ذخیره پاسخ (Response Cache) مراجعه کنید.
مرجع عنصر
در زیر عناصری که میتوانید در این سیاست پیکربندی کنید، فهرست شدهاند.
<PopulateCache async="false" continueOnError="false" enabled="true" name="Populate-Cache-1">
<DisplayName>Populate Cache 1</DisplayName>
<Properties/>
<CacheKey>
<Prefix/>
<KeyFragment ref=""/>
</CacheKey>
<!-- Omit this element if you're using the included shared cache. -->
<CacheResource/>
<Scope>Exclusive</Scope>
<ExpirySettings>
<TimeoutInSeconds>300</TimeoutInSeconds>
</ExpirySettings>
<Source>flowVar</Source>
</PopulateCache>ویژگیهای <PopulateCache>
جدول زیر ویژگی هایی را توصیف می کند که برای همه عناصر اصلی خط مشی مشترک هستند:
| صفت | توضیحات | پیش فرض | حضور |
|---|---|---|---|
name | نام داخلی سیاست. مقدار مشخصه در صورت تمایل، از عنصر | N/A | مورد نیاز |
continueOnError | برای بازگرداندن خطا در صورت شکست خط مشی، روی روی | نادرست | اختیاری |
enabled | برای اجرای خط مشی روی برای خاموش کردن خط مشی، روی | درست است | اختیاری |
async | این ویژگی منسوخ شده است. | نادرست | منسوخ شده است |
عنصر <DisplayName>
علاوه بر ویژگی name برای برچسبگذاری خطمشی در ویرایشگر پروکسی رابط کاربری مدیریت با نامی متفاوت و به زبان طبیعی، از آن استفاده کنید.
<DisplayName>Policy Display Name</DisplayName>
| پیش فرض | N/A اگر این عنصر را حذف کنید، از مقدار ویژگی |
|---|---|
| حضور | اختیاری |
| تایپ کنید | رشته |
عنصر <CacheKey>
یک اشارهگر منحصر به فرد به یک قطعه داده ذخیره شده در حافظه پنهان پیکربندی میکند.
کلیدهای حافظه نهان (Cache Keys) به اندازه ۲ کیلوبایت محدود شدهاند.
<CacheKey> <Prefix>string</Prefix> <KeyFragment ref="variable_name" /> <KeyFragment>literal_string</KeyFragment> </CacheKey>
پیشفرض: | ناموجود |
حضور: | مورد نیاز |
نوع: | ناموجود |
<CacheKey> نام هر قطعه داده ذخیره شده در حافظه پنهان را میسازد.
در زمان اجرا، مقادیر <KeyFragment> یا با مقدار عنصر <Scope> یا با مقدار <Prefix> اضافه میشوند. برای مثال، نتیجهی زیر، کلید کش UserToken__apiAccessToken__ <value_of_client_id> است:
<CacheKey>
<Prefix>UserToken</Prefix>
<KeyFragment>apiAccessToken</KeyFragment>
<KeyFragment ref="request.queryparam.client_id" />
</CacheKey> شما از عنصر <CacheKey> به همراه <Prefix> و <Scope> استفاده میکنید. برای اطلاعات بیشتر، به بخش کار با کلیدهای حافظه پنهان مراجعه کنید.
عنصر <CacheResource>
حافظه پنهانی را که پیامها باید در آن ذخیره شوند، مشخص میکند.
اگر این خطمشی (و خطمشیهای LookupCache و InvalidateCache مربوطه) از حافظه پنهان مشترک استفاده میکنند، این عنصر را کاملاً حذف کنید.
<CacheResource>cache_to_use</CacheResource>
پیشفرض: | ناموجود |
حضور: | اختیاری |
نوع: | رشته |
برای اطلاعات بیشتر در مورد پیکربندی حافظههای پنهان، به ایجاد و ویرایش حافظه پنهان محیطی مراجعه کنید.
عنصر <CacheKey>/<KeyFragment>
مقداری را مشخص میکند که باید در کلید حافظه پنهان (cache key) گنجانده شود و یک فضای نام برای تطبیق درخواستها با پاسخهای ذخیره شده در حافظه پنهان ایجاد میکند.
<KeyFragment ref="variable_name"/> <KeyFragment>literal_string</KeyFragment>
پیشفرض: | ناموجود |
حضور: | اختیاری |
نوع: | ناموجود |
این میتواند یک کلید (یک نام استاتیک که شما ارائه میدهید) یا یک مقدار (یک ورودی پویا که با ارجاع به یک متغیر تنظیم میشود) باشد. تمام قطعات مشخص شده (به علاوه پیشوند) با هم ترکیب میشوند تا کلید حافظه پنهان را ایجاد کنند.
<KeyFragment>apiAccessToken</KeyFragment> <KeyFragment ref="request.queryparam.client_id" />
شما از عنصر <KeyFragment> به همراه <Prefix> و <Scope> استفاده میکنید. برای اطلاعات بیشتر، به بخش کار با کلیدهای حافظه پنهان مراجعه کنید.
ویژگیها
| ویژگی | نوع | پیشفرض | مورد نیاز | توضیحات |
|---|---|---|---|---|
| مرجع | رشته | خیر | متغیری که مقدار از آن گرفته میشود. اگر این عنصر حاوی یک مقدار تحتاللفظی باشد، نباید استفاده شود. |
عنصر <CacheKey>/<Prefix>
مقداری را برای استفاده به عنوان پیشوند کلید حافظه پنهان مشخص میکند.
<Prefix>prefix_string</Prefix>
پیشفرض: | ناموجود |
حضور: | اختیاری |
نوع: | رشته |
وقتی میخواهید مقدار خودتان را به جای یک مقدار شمارشی <Scope> مشخص کنید، از این مقدار به جای <Scope> استفاده کنید. در صورت تعریف، <Prefix> مقدار کلید cache را برای ورودیهای نوشته شده در cache به ابتدای آن اضافه میکند. مقدار عنصر <Prefix> مقدار عنصر <Scope> را لغو میکند.
شما از عنصر <Prefix> به همراه <CacheKey> و <Scope> استفاده میکنید. برای اطلاعات بیشتر، به بخش کار با کلیدهای حافظه پنهان مراجعه کنید.
عنصر <ExpirySettings>
مشخص میکند که یک ورودی کش چه زمانی باید منقضی شود. در صورت وجود، <TimeoutInSeconds> هر دو <TimeOfDay> و <ExpiryDate> را لغو میکند.
<ExpirySettings> <!-- use exactly one of the following child elements --> <TimeoutInSeconds ref="duration_variable">seconds_until_expiration</TimeoutInSeconds> <ExpiryDate ref="date_variable">expiration_date</ExpiryDate> <TimeOfDay ref="time_variable">expiration_time</TimeOfDay> </ExpirySettings>
پیشفرض: | ناموجود |
حضور: | مورد نیاز |
نوع: | ناموجود |
عناصر فرزند <ExpirySettings>
دقیقاً از یک عنصر فرزند استفاده کنید. جدول زیر توضیحی در مورد عناصر فرزند <ExpirySettings> ارائه میدهد:
| عنصر فرزند | توضیحات |
|---|---|
<TimeoutInSeconds> | تعداد ثانیههایی که پس از آن یک ورودی کش باید منقضی شود. <ExpirySettings> <TimeoutInSeconds ref="var-containing-duration">expiry</TimeoutInSeconds> </ExpirySettings> این عنصر جایگزین عنصر |
<ExpiryDate> | تاریخی را که یک ورودی کش باید منقضی شود، مشخص میکند. رشتهای به شکل <ExpirySettings> <ExpiryDate ref="var-containing-date">expiry</ExpiryDate> </ExpirySettings> اگر تاریخ مشخص شده مربوط به گذشته باشد، این خطمشی حداکثر زمان ماندگاری را برای ورودی ذخیرهشده در حافظه پنهان اعمال میکند. این حداکثر ۳۰ روز است. |
<TimeOfDay> | زمانی از روز را مشخص میکند که یک ورودی کش باید در آن منقضی شود. رشتهای به شکل <ExpirySettings> <TimeOfDay ref="var-containing-time">expiry</TimeOfDay> </ExpirySettings> |
شما باید فقط یکی از عناصر فرزند ممکن را مشخص کنید. اگر چندین عنصر را مشخص کنید، ترتیب اولویت به صورت زیر است: TimeoutInSeconds ، ExpiryDate ، TimeOfDay .
با هر یک از عناصر فرزند فوق از <ExpirySettings> ، اگر ویژگی ref اختیاری را روی عنصر فرزند مشخص کنید، این سیاست مقدار انقضا را از متغیر context نامگذاری شده بازیابی میکند. اگر متغیر تعریف نشده باشد، این سیاست از مقدار متنی تحتاللفظی عنصر فرزند استفاده میکند.
عنصر <scope>
شمارشی (Enumeration) برای ساخت پیشوند برای کلید حافظه پنهان (cache key) استفاده میشود، زمانی که عنصر <Prefix> در عنصر <CacheKey> ارائه نشده باشد.
<Scope>scope_enumeration</Scope>
پیشفرض: | «اختصاصی» |
حضور: | اختیاری |
نوع: | رشته |
تنظیم <Scope> یک کلید cache را تعیین میکند که مطابق با مقدار <Scope> اضافه میشود. برای مثال، وقتی scope روی Exclusive تنظیم شده باشد، یک کلید cache به شکل زیر خواهد بود:
orgName__envName__apiProxyName__deployedRevisionNumber__proxy|TargetName__ [ serializedCacheKey ]
اگر عنصر <Prefix> در <CacheKey> وجود داشته باشد، جایگزین مقدار عنصر <Scope> میشود. مقادیر معتبر شامل موارد شمارشی زیر هستند.
شما از عنصر <Scope> به همراه <CacheKey> و <Prefix> استفاده میکنید. برای اطلاعات بیشتر، به بخش کار با کلیدهای حافظه پنهان مراجعه کنید.
مقادیر قابل قبول
Global | کلید کش (cache key) بین تمام پروکسیهای API مستقر در محیط به اشتراک گذاشته میشود. کلید کش به شکل orgName __ envName __ اضافه میشود. اگر یک ورودی |
Application | نام پروکسی API به عنوان پیشوند استفاده میشود. کلید کش به شکل orgName__envName__apiProxyName اضافه شده است. |
Proxy | پیکربندی ProxyEndpoint به عنوان پیشوند استفاده میشود. کلید کش به شکل orgName__envName__apiProxyName__deployedRevisionNumber__proxyEndpointName اضافه شده است. |
Target | پیکربندی TargetEndpoint به عنوان پیشوند استفاده میشود. کلید حافظه پنهان به شکل orgName__envName__apiProxyName__deployedRevisionNumber__targetEndpointName اضافه شده است. |
Exclusive | پیشفرض. این خاصترین حالت است و بنابراین حداقل خطر تصادم فضای نام را در یک حافظه پنهان مشخص ارائه میدهد. پیشوند یکی از دو شکل زیر است:
کلید حافظه پنهان به شکل orgName__envName__apiProxyName__deployedRevisionNumber__proxyNameITargetName در ابتدای آن قرار داده شده است. برای مثال، رشته کامل ممکن است به این شکل باشد: apifactory__test__weatherapi__16__default__apiAccessToken |
عنصر <منبع>
متغیری را مشخص میکند که مقدار آن باید در حافظه پنهان نوشته شود.
<Source>source_variable</Source>
پیشفرض: | ناموجود |
حضور: | مورد نیاز |
نوع: | رشته |
یادداشتهای استفاده
از این سیاست برای ذخیرهسازی عمومی استفاده کنید. در زمان اجرا، سیاست <PopulateCache> دادهها را از متغیری که در عنصر <Source> مشخص کردهاید، در حافظه پنهانی که در عنصر <CacheResource> مشخص کردهاید، مینویسد. میتوانید از عناصر <CacheKey> ، <Scope> و <Prefix> برای تعیین کلیدی که میتوانید از سیاست <LookupCache> برای بازیابی مقدار استفاده کنید، استفاده کنید. از عنصر <ExpirySettings> برای پیکربندی زمان انقضای مقدار ذخیرهسازی شده استفاده کنید.
ذخیره سازی عمومی با استفاده از سیاست PopulateCache، سیاست LookupCache و سیاست InvalidateCache یا از یک حافظه پنهان که شما پیکربندی میکنید یا از یک حافظه پنهان مشترک که به طور پیشفرض در آن گنجانده شده است، استفاده میکند. در بیشتر موارد، حافظه پنهان مشترک زیربنایی باید نیازهای شما را برآورده کند. برای استفاده از این حافظه پنهان، کافیست عنصر <CacheResource> را حذف کنید.
محدودیتهای حافظه پنهان : محدودیتهای مختلفی برای حافظه پنهان اعمال میشود، مانند نام و اندازه مقدار، تعداد کل حافظههای پنهان، تعداد موارد موجود در حافظه پنهان و تاریخ انقضا.
برای اطلاعات بیشتر در مورد مخزن دادهی زیربنایی، به بخش «بخشهای داخلی حافظهی نهان» مراجعه کنید. برای اطلاعات بیشتر در مورد پیکربندی حافظههای نهان، به بخش «ایجاد و ویرایش حافظهی نهان محیطی» مراجعه کنید.
درباره رمزگذاری حافظه پنهان
Edge برای فضای ابری عمومی: حافظه پنهان (Cache) فقط در سازمانهایی که از PCI و HIPAA پشتیبانی میکنند، رمزگذاری میشود. رمزگذاری برای این سازمانها در طول آمادهسازی سازمان پیکربندی میشود.
کدهای خطا
این بخش کدهای خطا و پیامهای خطایی را که برگردانده میشوند و متغیرهای خطا را که توسط Edge تنظیم میشوند، هنگامی که این خطمشی خطا را راهاندازی میکند، توضیح میدهد. این اطلاعات برای دانستن اینکه آیا در حال توسعه قوانین خطا برای رسیدگی به خطاها هستید، مهم است. برای کسب اطلاعات بیشتر، آنچه را که باید در مورد خطاهای خط مشی و مدیریت خطاها بدانید را ببینید.
خطاهای زمان اجرا
این خطاها ممکن است هنگام اجرای سیاست رخ دهند.
| کد خطا | وضعیت HTTP | زمانی رخ می دهد |
|---|---|---|
policies.populatecache.EntryCannotBeCached | 500 | ورودی را نمی توان کش کرد. شیء پیامی که در حافظه پنهان ذخیره می شود نمونه ای از کلاسی نیست که قابل سریال سازی باشد. |
خطاهای استقرار
این خطاها ممکن است زمانی رخ دهند که یک پروکسی حاوی این خط مشی را مستقر می کنید.
| نام خطا | علت | رفع کنید |
|---|---|---|
InvalidCacheResourceReference | اگر عنصر <CacheResource> در خط مشی PopulateCache روی نامی تنظیم شود که در محیطی که پراکسی API در آن مستقر می شود وجود نداشته باشد، این خطا رخ می دهد. | build |
CacheNotFound | حافظه پنهان مشخص شده در عنصر <CacheResource> وجود ندارد. | build |
متغیرهای خطا
این متغیرها زمانی تنظیم می شوند که این خط مشی خطایی را ایجاد کند. برای اطلاعات بیشتر، به آنچه باید در مورد خطاهای خط مشی بدانید مراجعه کنید.
| متغیرها | کجا | مثال |
|---|---|---|
fault.name=" fault_name " | fault_name نام خطا است، همانطور که در جدول خطاهای Runtime در بالا ذکر شده است. نام خطا آخرین قسمت کد خطا است. | fault.name = "EntryCannotBeCached" |
populatecache. policy_name .failed | policy_name نام سیاستی است که توسط کاربر مشخص شده است که خطا را ایجاد کرده است. | populatecache.POP-CACHE-1.failed = true |
نمونه پاسخ خطا
{ "fault": { "faultstring": "[entry] can not be cached. Only serializable entries are cached.", "detail": { "errorcode": "steps.populatecache.EntryCannotBeCached" } } }
مثال قانون خطا
<FaultRule name="Populate Cache Fault">
<Step>
<Name>AM-EntryCannotBeCached</Name>
<Condition>(fault.name Matches "EntryCannotBeCached") </Condition>
</Step>
<Condition>(populatecache.POP-CACHE-1.failed = true) </Condition>
</FaultRule>