خط مشی PopulateCache

شما در حال مشاهده مستندات 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

نام داخلی سیاست. مقدار مشخصه name می تواند شامل حروف، اعداد، فاصله، خط تیره، زیرخط و نقطه باشد. این مقدار نمی تواند بیش از 255 کاراکتر باشد.

در صورت تمایل، از عنصر <DisplayName> برای برچسب گذاری خط مشی در ویرایشگر پروکسی UI مدیریت با نامی به زبان طبیعی دیگر استفاده کنید.

N/A مورد نیاز
continueOnError

برای بازگرداندن خطا در صورت شکست خط مشی، روی false تنظیم کنید. این رفتار مورد انتظار برای اکثر سیاست ها است.

روی true تنظیم کنید تا اجرای جریان حتی پس از شکست خط مشی ادامه یابد.

نادرست اختیاری
enabled

برای اجرای خط مشی روی true تنظیم کنید.

برای خاموش کردن خط مشی، روی false تنظیم کنید. این سیاست حتی اگر به یک جریان وابسته باشد اجرا نخواهد شد.

درست است اختیاری
async

این ویژگی منسوخ شده است.

نادرست منسوخ شده است

عنصر <DisplayName>

علاوه بر ویژگی name برای برچسب‌گذاری خط‌مشی در ویرایشگر پروکسی رابط کاربری مدیریت با نامی متفاوت و به زبان طبیعی، از آن استفاده کنید.

<DisplayName>Policy Display Name</DisplayName>
پیش فرض

N/A

اگر این عنصر را حذف کنید، از مقدار ویژگی name خط مشی استفاده می شود.

حضور اختیاری
تایپ کنید رشته

عنصر <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>

این عنصر جایگزین عنصر TimeoutInSec که اکنون منسوخ شده است، می‌شود.

<ExpiryDate>

تاریخی را که یک ورودی کش باید منقضی شود، مشخص می‌کند. رشته‌ای به شکل mm-dd-yyyy را مشخص می‌کند.

<ExpirySettings>
  <ExpiryDate ref="var-containing-date">expiry</ExpiryDate>
</ExpirySettings>

اگر تاریخ مشخص شده مربوط به گذشته باشد، این خط‌مشی حداکثر زمان ماندگاری را برای ورودی ذخیره‌شده در حافظه پنهان اعمال می‌کند. این حداکثر ۳۰ روز است.

<TimeOfDay>

زمانی از روز را مشخص می‌کند که یک ورودی کش باید در آن منقضی شود. رشته‌ای به شکل HH:mm:ss مشخص کنید، که در آن HH نشان دهنده ساعت در یک ساعت ۲۴ ساعته، در منطقه زمانی UTC است. به عنوان مثال، ۱۴:۳۰:۰۰ به معنی ۲:۳۰ بعد از ظهر است.

<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 __ اضافه می‌شود.

اگر یک ورودی <CacheKey> با apiAccessToken <KeyFragment> و یک دامنه <Global> تعریف کنید، هر ورودی به صورت orgName__envName__apiAccessToken ذخیره می‌شود و به دنبال آن مقدار سریالی شده توکن دسترسی قرار می‌گیرد. برای یک پروکسی API که در محیطی به نام 'test' در سازمانی به نام 'apifactory' مستقر شده است، توکن‌های دسترسی تحت کلید حافظه پنهان زیر ذخیره می‌شوند: apifactory__test__apiAccessToken .

Application

نام پروکسی API به عنوان پیشوند استفاده می‌شود.

کلید کش به شکل orgName__envName__apiProxyName اضافه شده است.

Proxy

پیکربندی ProxyEndpoint به عنوان پیشوند استفاده می‌شود.

کلید کش به شکل orgName__envName__apiProxyName__deployedRevisionNumber__proxyEndpointName اضافه شده است.

Target

پیکربندی TargetEndpoint به عنوان پیشوند استفاده می‌شود.

کلید حافظه پنهان به شکل orgName__envName__apiProxyName__deployedRevisionNumber__targetEndpointName اضافه شده است.

Exclusive

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

پیشوند یکی از دو شکل زیر است:

  • اگر این سیاست به جریان ProxyEndpoint پیوست شده باشد، پیشوند به شکل ApiProxyName_ProxyEndpointName خواهد بود.
  • اگر این سیاست در TargetEndpoint پیوست شده باشد، پیشوند به شکل ApiProxyName_TargetName خواهد بود.

کلید حافظه پنهان به شکل 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 در آن مستقر می شود وجود نداشته باشد، این خطا رخ می دهد.
CacheNotFound حافظه پنهان مشخص شده در عنصر <CacheResource> وجود ندارد.

متغیرهای خطا

این متغیرها زمانی تنظیم می شوند که این خط مشی خطایی را ایجاد کند. برای اطلاعات بیشتر، به آنچه باید در مورد خطاهای خط مشی بدانید مراجعه کنید.

متغیرها کجا مثال
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

نام داخلی سیاست. مقدار مشخصه name می تواند شامل حروف، اعداد، فاصله، خط تیره، زیرخط و نقطه باشد. این مقدار نمی تواند بیش از 255 کاراکتر باشد.

در صورت تمایل، از عنصر <DisplayName> برای برچسب گذاری خط مشی در ویرایشگر پروکسی UI مدیریت با نامی به زبان طبیعی دیگر استفاده کنید.

N/A مورد نیاز
continueOnError

برای بازگرداندن خطا در صورت شکست خط مشی، روی false تنظیم کنید. این رفتار مورد انتظار برای اکثر سیاست ها است.

روی true تنظیم کنید تا اجرای جریان حتی پس از شکست خط مشی ادامه یابد.

نادرست اختیاری
enabled

برای اجرای خط مشی روی true تنظیم کنید.

برای خاموش کردن خط مشی، روی false تنظیم کنید. این سیاست حتی اگر به یک جریان وابسته باشد اجرا نخواهد شد.

درست است اختیاری
async

این ویژگی منسوخ شده است.

نادرست منسوخ شده است

عنصر <DisplayName>

علاوه بر ویژگی name برای برچسب‌گذاری خط‌مشی در ویرایشگر پروکسی رابط کاربری مدیریت با نامی متفاوت و به زبان طبیعی، از آن استفاده کنید.

<DisplayName>Policy Display Name</DisplayName>
پیش فرض

N/A

اگر این عنصر را حذف کنید، از مقدار ویژگی name خط مشی استفاده می شود.

حضور اختیاری
تایپ کنید رشته

عنصر <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>

این عنصر جایگزین عنصر TimeoutInSec که اکنون منسوخ شده است، می‌شود.

<ExpiryDate>

تاریخی را که یک ورودی کش باید منقضی شود، مشخص می‌کند. رشته‌ای به شکل mm-dd-yyyy را مشخص می‌کند.

<ExpirySettings>
  <ExpiryDate ref="var-containing-date">expiry</ExpiryDate>
</ExpirySettings>

اگر تاریخ مشخص شده مربوط به گذشته باشد، این خط‌مشی حداکثر زمان ماندگاری را برای ورودی ذخیره‌شده در حافظه پنهان اعمال می‌کند. این حداکثر ۳۰ روز است.

<TimeOfDay>

زمانی از روز را مشخص می‌کند که یک ورودی کش باید در آن منقضی شود. رشته‌ای به شکل HH:mm:ss مشخص کنید، که در آن HH نشان دهنده ساعت در یک ساعت ۲۴ ساعته، در منطقه زمانی UTC است. به عنوان مثال، ۱۴:۳۰:۰۰ به معنی ۲:۳۰ بعد از ظهر است.

<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 __ اضافه می‌شود.

اگر یک ورودی <CacheKey> با apiAccessToken <KeyFragment> و یک دامنه <Global> تعریف کنید، هر ورودی به صورت orgName__envName__apiAccessToken ذخیره می‌شود و به دنبال آن مقدار سریالی شده توکن دسترسی قرار می‌گیرد. برای یک پروکسی API که در محیطی به نام 'test' در سازمانی به نام 'apifactory' مستقر شده است، توکن‌های دسترسی تحت کلید حافظه پنهان زیر ذخیره می‌شوند: apifactory__test__apiAccessToken .

Application

نام پروکسی API به عنوان پیشوند استفاده می‌شود.

کلید کش به شکل orgName__envName__apiProxyName اضافه شده است.

Proxy

پیکربندی ProxyEndpoint به عنوان پیشوند استفاده می‌شود.

کلید کش به شکل orgName__envName__apiProxyName__deployedRevisionNumber__proxyEndpointName اضافه شده است.

Target

پیکربندی TargetEndpoint به عنوان پیشوند استفاده می‌شود.

کلید حافظه پنهان به شکل orgName__envName__apiProxyName__deployedRevisionNumber__targetEndpointName اضافه شده است.

Exclusive

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

پیشوند یکی از دو شکل زیر است:

  • اگر این سیاست به جریان ProxyEndpoint پیوست شده باشد، پیشوند به شکل ApiProxyName_ProxyEndpointName خواهد بود.
  • اگر این سیاست در TargetEndpoint پیوست شده باشد، پیشوند به شکل ApiProxyName_TargetName خواهد بود.

کلید حافظه پنهان به شکل 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 در آن مستقر می شود وجود نداشته باشد، این خطا رخ می دهد.
CacheNotFound حافظه پنهان مشخص شده در عنصر <CacheResource> وجود ندارد.

متغیرهای خطا

این متغیرها زمانی تنظیم می شوند که این خط مشی خطایی را ایجاد کند. برای اطلاعات بیشتر، به آنچه باید در مورد خطاهای خط مشی بدانید مراجعه کنید.

متغیرها کجا مثال
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>