นโยบาย PopulateCache

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

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

นโยบาย Populate Cache ออกแบบมาเพื่อเขียนรายการในแคชอเนกประสงค์ระยะสั้น โดยใช้ร่วมกับนโยบาย Lookup Cache (สำหรับการอ่านรายการแคช) และ Invalidate Cache (สำหรับการล้างรายการ)

หากต้องการแคชการตอบกลับของทรัพยากรแบ็กเอนด์ โปรดดูนโยบาย 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 การจัดการด้วยชื่อที่เป็นภาษาธรรมชาติต่างกัน

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

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

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

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

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

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

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

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

เท็จ เลิกใช้

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

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

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

ไม่มี

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

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

องค์ประกอบ <CacheKey>

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

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

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

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

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

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

ไม่มี

การแสดงผล:

ไม่บังคับ

ประเภท:

ไม่มี

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

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

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

แอตทริบิวต์

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

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

องค์ประกอบ <CacheKey>/<Prefix>

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

<Prefix>prefix_string</Prefix>

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

ไม่มี

การแสดงผล:

ไม่บังคับ

ประเภท:

สตริง

ใช้ค่านี้แทน <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>

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

ไม่มี

การแสดงผล:

ต้องระบุ

ประเภท:

ไม่มี

องค์ประกอบย่อยของ <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>

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

<TimeOfDay>

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

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

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

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

องค์ประกอบ <Scope>

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

<Scope>scope_enumeration</Scope>

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

"Exclusive"

การแสดงผล:

ไม่บังคับ

ประเภท:

สตริง

การตั้งค่า <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

ค่าเริ่มต้น ค่านี้มีความเฉพาะเจาะจงมากที่สุด จึงมีความเสี่ยงน้อยที่สุดที่จะเกิดการชนกันของเนมสเปซ ภายในแคชที่กำหนด

คำนำหน้ามี 2 รูปแบบดังนี้

  • หากแนบนโยบายกับโฟลว์ ProxyEndpoint คำนำหน้าจะมีรูปแบบ ApiProxyName_ProxyEndpointName
  • หากแนบนโยบายที่ TargetEndpoint คำนำหน้าจะมีรูปแบบ ApiProxyName_TargetName

ระบบจะเพิ่มคีย์แคชไว้ล่วงหน้าในรูปแบบ orgName__envName__apiProxyName__deployedRevisionNumber__proxyNameITargetName

ตัวอย่างเช่น สตริงแบบเต็มอาจมีลักษณะดังนี้

apifactory__test__weatherapi__16__default__apiAccessToken

องค์ประกอบ <Source>

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

<Source>source_variable</Source>

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

ไม่มี

การแสดงผล:

ต้องระบุ

ประเภท:

สตริง

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

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

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

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

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

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

Edge สำหรับระบบคลาวด์สาธารณะ: ระบบจะเข้ารหัสแคช เฉพาะ ใน องค์กรที่เปิดใช้ PCI- และ HIPAA การเข้ารหัสสำหรับองค์กรเหล่านั้นจะได้รับการกำหนดค่าระหว่างการจัดสรรองค์กร

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

ส่วนนี้จะอธิบายรหัสข้อผิดพลาดและข้อความแสดงข้อผิดพลาดที่แสดงกลับมา และตัวแปรข้อผิดพลาดที่ Edge ตั้งค่าไว้เมื่อนโยบายนี้ทริกเกอร์ข้อผิดพลาด ข้อมูลนี้มีความสำคัญต่อการทราบว่าคุณจะสร้างกฎความผิดพลาดเพื่อ จัดการกับข้อผิดพลาด หากต้องการเรียนรู้เพิ่มเติม โปรดดูที่สิ่งที่คุณจำเป็นต้องทราบ เกี่ยวกับข้อผิดพลาดของนโยบายและการจัดการ ข้อผิดพลาด

ข้อผิดพลาดเกี่ยวกับรันไทม์

ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นเมื่อนโยบายทำงาน

รหัสข้อผิดพลาด สถานะ HTTP เกิดขึ้นเมื่อ
policies.populatecache.EntryCannotBeCached 500 ระบบแคชรายการไม่ได้ ออบเจ็กต์ข้อความที่กำลังแคชไม่ใช่อินสแตนซ์ของ ที่ซีเรียลได้

ข้อผิดพลาดในการทำให้ใช้งานได้

ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นเมื่อคุณใช้พร็อกซีที่มีนโยบายนี้

ชื่อข้อผิดพลาด สาเหตุ แก้ไข
InvalidCacheResourceReference ข้อผิดพลาดนี้เกิดขึ้นหากมีการตั้งค่าองค์ประกอบ <CacheResource> ในนโยบาย PopulateCache เป็น ชื่อที่ไม่มีอยู่ในสภาพแวดล้อมที่ทำให้พร็อกซี API ใช้งานได้
CacheNotFound แคชที่ระบุในองค์ประกอบ <CacheResource> ไม่ ที่มีอยู่

ตัวแปรความผิดพลาด

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

ตัวแปร สถานที่ ตัวอย่าง
fault.name="fault_name" fault_name คือชื่อของข้อผิดพลาดตามที่ระบุไว้ในตารางข้อผิดพลาดรันไทม์ด้านบน ชื่อข้อผิดพลาดคือส่วนสุดท้ายของรหัสข้อผิดพลาด 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>