คุณกำลังดูเอกสารประกอบของ 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 |
ชื่อภายในของนโยบาย ค่าของแอตทริบิวต์ (ไม่บังคับ) ใช้องค์ประกอบ |
ไม่มี | ต้องระบุ |
continueOnError |
ตั้งค่าเป็น ตั้งค่าเป็น |
เท็จ | ไม่บังคับ |
enabled |
ตั้งค่าเป็น ตั้งค่าเป็น |
จริง | ไม่บังคับ |
async |
แอตทริบิวต์นี้เลิกใช้งานแล้ว |
เท็จ | เลิกใช้ |
<DisplayName> องค์ประกอบ
ใช้เพิ่มเติมจากแอตทริบิวต์ name เพื่อติดป้ายกำกับนโยบายใน
เครื่องมือแก้ไขพร็อกซี UI การจัดการด้วยชื่อที่เป็นภาษาธรรมชาติต่างกัน
<DisplayName>Policy Display Name</DisplayName>
| ค่าเริ่มต้น |
ไม่มี หากไม่ใส่องค์ประกอบนี้ ค่าของแอตทริบิวต์ |
|---|---|
| การมีบุคคลอยู่ | ไม่บังคับ |
| ประเภท | สตริง |
องค์ประกอบ <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> องค์ประกอบนี้จะแทนที่องค์ประกอบ |
<ExpiryDate> |
ระบุวันที่ที่รายการแคชควรหมดอายุ ระบุสตริงในรูปแบบ
<ExpirySettings> <ExpiryDate ref="var-containing-date">expiry</ExpiryDate> </ExpirySettings> หากวันที่ที่ระบุอยู่ในอดีต นโยบายจะใช้ เวลาอยู่รอดสูงสุดกับรายการที่แคชไว้ ซึ่งสูงสุด 30 วัน |
<TimeOfDay> |
ระบุเวลาของวันที่รายการแคชควรหมดอายุ
ระบุสตริงในรูปแบบ <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 __ หากคุณกำหนดรายการ |
Application |
ระบบจะใช้ชื่อพร็อกซี API เป็นคำนำหน้า ระบบจะเพิ่มคีย์แคชไว้ล่วงหน้าในรูปแบบ orgName__envName__apiProxyName |
Proxy |
ระบบจะใช้การกำหนดค่า ProxyEndpoint เป็นคำนำหน้า ระบบจะเพิ่มคีย์แคชไว้ล่วงหน้าในรูปแบบ orgName__envName__apiProxyName__deployedRevisionNumber__proxyEndpointName |
Target |
ระบบจะใช้การกำหนดค่า TargetEndpoint เป็นคำนำหน้า ระบบจะเพิ่มคีย์แคชไว้ล่วงหน้าในรูปแบบ orgName__envName__apiProxyName__deployedRevisionNumber__targetEndpointName |
Exclusive |
ค่าเริ่มต้น ค่านี้มีความเฉพาะเจาะจงมากที่สุด จึงมีความเสี่ยงน้อยที่สุดที่จะเกิดการชนกันของเนมสเปซ ภายในแคชที่กำหนด คำนำหน้ามี 2 รูปแบบดังนี้
ระบบจะเพิ่มคีย์แคชไว้ล่วงหน้าในรูปแบบ 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 ใช้งานได้ |
build |
CacheNotFound |
แคชที่ระบุในองค์ประกอบ <CacheResource> ไม่
ที่มีอยู่ |
build |
ตัวแปรความผิดพลาด
ระบบจะตั้งค่าตัวแปรเหล่านี้เมื่อนโยบายนี้ทำให้เกิดข้อผิดพลาด โปรดดูข้อมูลเพิ่มเติมที่หัวข้อสิ่งที่คุณจำเป็นต้องทราบ เกี่ยวกับข้อผิดพลาดของนโยบาย
| ตัวแปร | สถานที่ | ตัวอย่าง |
|---|---|---|
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>