นโยบาย PopulateCache

คุณกำลังดูเอกสารประกอบ Apigee Edge
ไปที่ เอกสารประกอบเกี่ยวกับ Apigee X.
ข้อมูล

กำหนดค่าวิธีเขียนค่าที่แคชไว้ขณะรันไทม์

นโยบายแคชการเติมข้อมูลออกแบบมาเพื่อเขียนรายการในแคชสำหรับจุดประสงค์ทั่วไปในระยะสั้น ซึ่งใช้ร่วมกับแท็ก Lookup นโยบายแคช (สำหรับการอ่านรายการแคช) และ นโยบายแคชใช้งานไม่ได้ (สำหรับการทำรายการให้เป็นโมฆะ)

สำหรับการแคชคำตอบของทรัพยากรแบ็กเอนด์ โปรดดูที่ นโยบายแคชการตอบกลับ

การอ้างอิงองค์ประกอบ

รายการต่อไปนี้แสดงองค์ประกอบที่คุณสามารถกำหนดค่าในนโยบายนี้

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

&lt;PopulateCache&gt; แอตทริบิวต์

ตารางต่อไปนี้อธิบายแอตทริบิวต์ทั่วไปในองค์ประกอบระดับบนสุดของนโยบายทั้งหมด

แอตทริบิวต์ คำอธิบาย ค่าเริ่มต้น การมีบุคคลอยู่
name

ชื่อภายในของนโยบาย ค่าของแอตทริบิวต์ name สามารถ ประกอบด้วยตัวอักษร ตัวเลข การเว้นวรรค ขีดกลางสั้น ขีดล่าง และจุด ค่านี้ไม่สามารถ เกิน 255 อักขระ

(ไม่บังคับ) ใช้องค์ประกอบ <DisplayName> เพื่อติดป้ายกำกับนโยบายใน เครื่องมือแก้ไขพร็อกซี UI การจัดการด้วยชื่อที่เป็นภาษาธรรมชาติต่างกัน

ไม่มี ต้องระบุ
continueOnError

ตั้งค่าเป็น false เพื่อแสดงผลข้อผิดพลาดเมื่อนโยบายล้มเหลว เป็นเรื่องปกติ พฤติกรรมสำหรับนโยบายส่วนใหญ่

ตั้งค่าเป็น true เพื่อให้ดำเนินการตามขั้นตอนได้อย่างต่อเนื่องแม้จะมีนโยบายแล้วก็ตาม ล้มเหลว

เท็จ ไม่บังคับ
enabled

ตั้งค่าเป็น true เพื่อบังคับใช้นโยบาย

ตั้งค่าเป็น false เพื่อปิดนโยบาย นโยบายจะไม่ บังคับใช้ แม้ว่าจะยังคงแนบกับขั้นตอน

จริง ไม่บังคับ
async

แอตทริบิวต์นี้เลิกใช้งานแล้ว

เท็จ เลิกใช้

&lt;DisplayName&gt; องค์ประกอบ

ใช้เพิ่มเติมจากแอตทริบิวต์ name เพื่อติดป้ายกำกับนโยบายใน เครื่องมือแก้ไขพร็อกซี UI การจัดการด้วยชื่อที่เป็นภาษาธรรมชาติต่างกัน

<DisplayName>Policy Display Name</DisplayName>
ค่าเริ่มต้น

ไม่มี

หากไม่ใส่องค์ประกอบนี้ ค่าของแอตทริบิวต์ name ของนโยบายจะเป็น

การมีบุคคลอยู่ ไม่บังคับ
ประเภท สตริง

&lt;CacheKey&gt; องค์ประกอบ

กำหนดค่าตัวชี้ที่ไม่ซ้ำกันไปยังข้อมูลที่จัดเก็บไว้ในแคช

คีย์แคชมีขนาดไม่เกิน 2 KB

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

ค่าเริ่มต้น:

ไม่มี

การตรวจหาบุคคล:

ต้องระบุ

ประเภท:

ไม่มี

<CacheKey> จะสร้างชื่อข้อมูลแต่ละส่วนที่จัดเก็บไว้ใน แคช

ระหว่างรันไทม์ จะมีการเพิ่มค่า <KeyFragment> ไว้ข้างหน้าค่า ค่าองค์ประกอบ <Scope> หรือค่า <Prefix> ตัวอย่างเช่น พารามิเตอร์ ต่อจากผลลัพธ์ในคีย์แคชของ UserToken__apiAccessToken__&lt;value_of_client_id&gt;:

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

คุณใช้องค์ประกอบ <CacheKey> ร่วมกับ <Prefix> และ <Scope> ดูข้อมูลเพิ่มเติมได้ที่การใช้งานคีย์แคช

&lt;CacheResource&gt; องค์ประกอบ

ระบุแคชที่ใช้เก็บข้อความ

ละเว้นองค์ประกอบนี้โดยสิ้นเชิงหากนโยบายนี้ (และ LookupCache ที่เกี่ยวข้องและ นโยบายแคชเก่า) กำลังใช้แคชที่แชร์ซึ่งรวมไว้

<CacheResource>cache_to_use</CacheResource>

ค่าเริ่มต้น:

ไม่มี

การตรวจหาบุคคล:

ไม่บังคับ

ประเภท:

สตริง

โปรดดูข้อมูลเพิ่มเติมเกี่ยวกับการกำหนดค่าแคชที่การสร้างและแก้ไขสภาพแวดล้อม แคช

&lt;CacheKey&gt;/&lt;KeyFragment&gt; องค์ประกอบ

ระบุค่าที่ควรรวมไว้ในคีย์แคช โดยสร้างเนมสเปซสำหรับการจับคู่ คำขอไปยังการตอบกลับที่แคชไว้

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

ค่าเริ่มต้น:

ไม่มี

การตรวจหาบุคคล:

ไม่บังคับ

ประเภท:

ไม่มี

ซึ่งอาจเป็นคีย์ (ชื่อแบบคงที่ที่คุณระบุ) หรือค่า (รายการแบบไดนามิกที่ตั้งค่าโดย อ้างอิงตัวแปร) ส่วนย่อยที่ระบุทั้งหมดแบบรวม (บวกคำนำหน้า) จะต่อเข้ากับ สร้างคีย์แคช

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

คุณใช้องค์ประกอบ <KeyFragment> ร่วมกับ <Prefix> และ <Scope> ดูข้อมูลเพิ่มเติมได้ที่การใช้งานคีย์แคช

Attributes

แอตทริบิวต์ ประเภท ค่าเริ่มต้น ต้องระบุ คำอธิบาย
อ้างอิง สตริง ไม่ได้

ตัวแปรที่จะรับค่า ไม่ควรใช้หากองค์ประกอบนี้มี ค่าลิเทอรัล

&lt;CacheKey&gt;/&lt;Prefix&gt; องค์ประกอบ

ระบุค่าที่จะใช้เป็นคำนำหน้าคีย์แคช

<Prefix>prefix_string</Prefix>

ค่าเริ่มต้น:

ไม่มี

การตรวจหาบุคคล:

ไม่บังคับ

ประเภท:

สตริง

ใช้ค่านี้แทน <Scope> เมื่อต้องการระบุค่าของคุณเอง แทนที่จะเป็นค่าที่แจกแจง <Scope> หากกำหนดไว้ <Prefix> เพิ่มค่าคีย์แคชไว้หน้ารายการที่เขียนลงในแคช ต ค่าองค์ประกอบ <Prefix> จะลบล้างองค์ประกอบ <Scope>

คุณใช้องค์ประกอบ <Prefix> ร่วมกับ <CacheKey> และ <Scope> ดูข้อมูลเพิ่มเติมได้ที่การใช้งานคีย์แคช

&lt;ExpirySettings&gt; องค์ประกอบ

ระบุเวลาที่รายการแคชควรหมดอายุ วันและเวลา มี ลบล้าง <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>

ใช้องค์ประกอบย่อยเพียง 1 รายการเท่านั้น ตารางต่อไปนี้จะให้คำอธิบายขององค์ประกอบย่อยของ <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>

หากวันที่ที่ระบุเป็นวันที่ในอดีต นโยบายจะใช้ Time to Live สูงสุดไปยังรายการที่แคชไว้ ซึ่งระยะเวลาสูงสุดคือ 30 วัน

<TimeOfDay>

ระบุเวลาที่รายการแคชควรหมดอายุ ระบุสตริงในรูปแบบ HH:mm:ss โดยที่ HH แทนค่า ตามรูปแบบเวลา 24 ชั่วโมงในเขตเวลา UTC ตัวอย่างเช่น 14:30:00 หมายถึง บ่าย 2 โมงครึ่ง

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

คุณควรระบุองค์ประกอบย่อยที่เป็นไปได้เพียงรายการเดียว หากคุณระบุหลายองค์ประกอบ มีลําดับความสําคัญดังนี้TimeoutInSeconds, ExpiryDate TimeOfDay

ด้วยองค์ประกอบย่อยแต่ละรายการข้างต้นของ <ExpirySettings> หากคุณระบุแอตทริบิวต์ ref ซึ่งไม่บังคับในองค์ประกอบย่อย นโยบายจะ ดึงค่าวันหมดอายุจากตัวแปรบริบทที่มีชื่อ หากไม่ได้กำหนดตัวแปร นโยบายจะใช้ค่าข้อความตามตัวอักษรขององค์ประกอบย่อย

&lt;Scope&gt; องค์ประกอบ

การแจงนับที่ใช้เพื่อสร้างคำนำหน้าสำหรับคีย์แคชเมื่อ <Prefix> ไม่ได้ระบุองค์ประกอบในองค์ประกอบ <CacheKey>

<Scope>scope_enumeration</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 ที่ทำให้ใช้งานได้ในสภาพแวดล้อมที่เรียกว่า "ทดสอบ" ในองค์กรที่ชื่อ "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

&lt;Source&gt; องค์ประกอบ

ระบุตัวแปรที่ควรเขียนค่าลงในแคช

<Source>source_variable</Source>

ค่าเริ่มต้น:

ไม่มี

การตรวจหาบุคคล:

ต้องระบุ

ประเภท:

สตริง

หมายเหตุการใช้งาน

ใช้นโยบายนี้เพื่อการแคชสำหรับจุดประสงค์ทั่วไป ระหว่างรันไทม์ นโยบาย <PopulateCache> จะเขียนข้อมูลจากตัวแปรที่คุณระบุในส่วน <Source> ลงในแคชที่คุณระบุไว้ใน องค์ประกอบ <CacheResource> คุณสามารถใช้ <CacheKey> <Scope> และ <Prefix> เพื่อระบุคีย์ที่คุณ สามารถใช้จากนโยบาย <LookupCache> เพื่อดึงข้อมูลค่าได้ ใช้เมนู <ExpirySettings> องค์ประกอบที่จะกำหนดค่าว่าค่าที่แคชไว้ควรหมดอายุเมื่อใด

การแคชจุดประสงค์ทั่วไปด้วยนโยบาย PopulateCache, นโยบาย LookupCache และนโยบาย "แคช ใช้ไม่ได้" แคชที่คุณกำหนดค่าหรือแคชที่แชร์ซึ่งรวมไว้โดยค่าเริ่มต้น ในกรณีส่วนใหญ่ พารามิเตอร์ แคชที่แชร์ที่เกี่ยวข้องควรจะตรงตามความต้องการของคุณ หากต้องการใช้แคชนี้ ให้ละเว้น องค์ประกอบ <CacheResource>

ขีดจำกัดของแคช: ขีดจำกัดแคชที่หลากหลาย เช่น ชื่อและค่า จำนวนแคชทั้งหมด จำนวนรายการในแคช และวันหมดอายุ

ดูข้อมูลเพิ่มเติมเกี่ยวกับพื้นที่เก็บข้อมูลที่สำคัญได้ที่แคชภายใน โปรดดูข้อมูลเพิ่มเติมเกี่ยวกับการกำหนดค่า โปรดดูการสร้างและแก้ไข แคชสภาพแวดล้อม

เกี่ยวกับการเข้ารหัสแคช

Edge for Public Cloud: แคชจะได้รับการเข้ารหัสในเท่านั้น PCI และ HIPAA องค์กร มีการกำหนดค่าการเข้ารหัสสำหรับองค์กรเหล่านั้นระหว่างองค์กร การจัดสรร

รหัสข้อผิดพลาด

This section describes the fault codes and error messages that are returned and fault variables that are set by Edge when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.

Runtime errors

These errors can occur when the policy executes.

Fault code HTTP Status Occurs when
policies.populatecache.EntryCannotBeCached 500 An entry cannot be cached. The message object being cached is not an instance of a class that is Serializable.

Deployment errors

These errors can occur when you deploy a proxy containing this policy.

Error name Cause Fix
InvalidCacheResourceReference This error occurs if the <CacheResource> element in the PopulateCache policy is set to a name that does not exist in the environment where the API proxy is being deployed.
CacheNotFound The cache specified in the <CacheResource> element does not exist.

Fault variables

These variables are set when this policy triggers an error. For more information, see What you need to know about policy errors.

Variables Where Example
fault.name="fault_name" fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name = "EntryCannotBeCached"
populatecache.policy_name.failed policy_name is the user-specified name of the policy that threw the fault. populatecache.POP-CACHE-1.failed = true

Example error response

{
  "fault": {
    "faultstring": "[entry] can not be cached. Only serializable entries are cached.",
    "detail": {
      "errorcode": "steps.populatecache.EntryCannotBeCached"
    }
  }
}

Example fault rule

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