خط مشی PopulateCache

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

نحوه نوشتن مقادیر کش شده در زمان اجرا را پیکربندی می کند.

خط‌مشی Populate Cache برای نوشتن ورودی‌ها در یک حافظه پنهان کوتاه‌مدت با هدف کلی طراحی شده است. این در ارتباط با سیاست جستجوی حافظه پنهان (برای خواندن ورودی های حافظه پنهان) و خط مشی Invalidate 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>

یک اشاره گر منحصر به فرد را برای یک قطعه داده ذخیره شده در حافظه پنهان پیکربندی می کند.

اندازه کلیدهای کش به 2 کیلوبایت محدود شده است.

<CacheKey>
    <Prefix>string</Prefix>
    <KeyFragment ref="variable_name" />
    <KeyFragment>literal_string</KeyFragment>
</CacheKey>

پیش فرض:

N/A

حضور:

ضروری

نوع:

N/A

<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>

پیش فرض:

N/A

حضور:

اختیاری

نوع:

رشته

برای اطلاعات بیشتر در مورد پیکربندی حافظه پنهان، به ایجاد و ویرایش کش محیطی مراجعه کنید.

عنصر <CacheKey>/<KeyFragment>

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

<KeyFragment ref="variable_name"/>
<KeyFragment>literal_string</KeyFragment>

پیش فرض:

N/A

حضور:

اختیاری

نوع:

N/A

این می تواند یک کلید (نام ثابتی که ارائه می کنید) یا یک مقدار (یک ورودی پویا با ارجاع به یک متغیر) باشد. تمام قطعات مشخص شده با هم ترکیب شده اند (به علاوه پیشوند) برای ایجاد کلید حافظه پنهان.

<KeyFragment>apiAccessToken</KeyFragment>
<KeyFragment ref="request.queryparam.client_id" />

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

ویژگی های

صفت تایپ کنید پیش فرض ضروری شرح
مرجع رشته خیر

متغیری که از آن مقدار به دست می آید. اگر این عنصر دارای مقدار تحت اللفظی باشد، نباید استفاده شود.

عنصر <CacheKey>/<Prefix>

مقداری را برای استفاده به عنوان پیشوند کلید حافظه پنهان تعیین می کند.

<Prefix>prefix_string</Prefix>

پیش فرض:

N/A

حضور:

اختیاری

نوع:

رشته

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

پیش فرض:

N/A

حضور:

ضروری

نوع:

N/A

عناصر فرزند <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>

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

<TimeOfDay>

زمانی از روز را مشخص می کند که در آن ورودی حافظه پنهان باید منقضی شود. رشته ای را به شکل HH:mm:ss مشخص کنید، که در آن HH نشان دهنده ساعت در ساعت 24 ساعته در منطقه زمانی UTC است. به عنوان مثال، 14:30:00 به معنای ساعت 2:30 بعد از ظهر است.

<ExpirySettings>
  <TimeOfDay ref="var-containing-time">expiry</TimeOfDay>
</ExpirySettings>

شما باید فقط یکی از عناصر فرزند ممکن را مشخص کنید. اگر چندین عنصر را مشخص کنید، ترتیب اولویت به این صورت است: TimeoutInSeconds ، ExpiryDate ، TimeOfDay .

با هر یک از عناصر فرزند فوق در <ExpirySettings> ، اگر ویژگی ref اختیاری را در عنصر فرزند مشخص کنید، خط مشی مقدار انقضا را از متغیر زمینه نامگذاری شده بازیابی می کند. اگر متغیر تعریف نشده باشد، خط مشی از مقدار متن تحت اللفظی عنصر فرزند استفاده می کند.

عنصر <Scope>

زمانی که عنصر <Prefix> در عنصر <CacheKey> ارائه نشده باشد، شمارش برای ساختن یک پیشوند برای یک کلید کش استفاده می شود.

<Scope>scope_enumeration</Scope>

پیش فرض:

"انحصاری"

حضور:

اختیاری

نوع:

رشته

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

orgName__envName__apiProxyName__deployedRevisionNumber__proxy|TargetName__ [ serializedCacheKey ]

اگر یک عنصر <Prefix> در <CacheKey> وجود داشته باشد، جایگزین مقدار عنصر <Scope> می شود. مقادیر معتبر شامل شمارش های زیر است.

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

ارزش های قابل قبول

Global

کلید کش در تمام پراکسی های API مستقر در محیط به اشتراک گذاشته می شود. کلید کش به شکل orgName __ envName __ اضافه شده است.

اگر یک ورودی <CacheKey> را با <KeyFragment> apiAccessToken و یک محدوده <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>

پیش فرض:

N/A

حضور:

ضروری

نوع:

رشته

نکات استفاده

از این خط‌مشی برای ذخیره‌سازی با هدف عمومی استفاده کنید. در زمان اجرا، خط مشی <PopulateCache> داده ها را از متغیری که در عنصر <Source> مشخص کرده اید، به حافظه پنهانی که در عنصر <CacheResource> مشخص کرده اید می نویسد. می توانید از عناصر <CacheKey> ، <Scope> و <Prefix> برای تعیین کلیدی استفاده کنید که می توانید از سیاست <LookupCache> برای بازیابی مقدار استفاده کنید. از عنصر <ExpirySettings> برای پیکربندی زمان منقضی شدن مقدار حافظه پنهان استفاده کنید.

کش با هدف عمومی با خط‌مشی PopulateCache، خط‌مشی LookupCache و خط‌مشی InvalidateCache از حافظه پنهانی که شما پیکربندی می‌کنید یا حافظه پنهان مشترکی که به‌طور پیش‌فرض گنجانده شده است، استفاده می‌کند. در بیشتر موارد، حافظه پنهان مشترک اساسی باید نیازهای شما را برآورده کند. برای استفاده از این کش، به سادگی عنصر <CacheResource> را حذف کنید.

محدودیت‌های حافظه پنهان : محدودیت‌های حافظه پنهان اعمال می‌شود، مانند اندازه نام و مقدار، تعداد کل حافظه‌های پنهان، تعداد موارد موجود در حافظه پنهان و انقضا.

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

درباره رمزگذاری کش

Edge for Public Cloud: کش فقط در سازمان‌های دارای 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>