นโยบาย ResponseCache

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

แคชข้อมูลจากทรัพยากรแบ็กเอนด์ ซึ่งจะลดจำนวนคำขอไปยังทรัพยากร ในขณะที่แอปส่งคำขอไปยัง URI เดียวกัน คุณจะใช้นโยบายนี้เพื่อแสดงผลการตอบกลับที่แคชไว้แทนการส่งต่อคำขอเหล่านั้นไปยังเซิร์ฟเวอร์แบ็กเอนด์ได้ นโยบาย ResponseCache ช่วยปรับปรุงประสิทธิภาพของ API ผ่านเวลาในการตอบสนองและการจราจรของข้อมูลในเครือข่ายที่ลดลงได้

คุณน่าจะพบว่า ResponseCache มีประโยชน์มากที่สุดเมื่อข้อมูลแบ็กเอนด์ที่ API ใช้ได้รับการอัปเดตเป็นระยะๆ เท่านั้น ตัวอย่างเช่น สมมติว่าคุณมี API ที่แสดงข้อมูลรายงานสภาพอากาศซึ่งรีเฟรชทุก 10 นาทีเท่านั้น การใช้ ResponseCache เพื่อแสดงการตอบกลับที่แคชไว้ระหว่างการรีเฟรชจะลดจำนวนคำขอที่เข้าถึงแบ็กเอนด์ได้ ทั้งยังช่วยลดจำนวนของการฮอพเครือข่ายด้วย

สำหรับการแคชในระยะสั้น ให้พิจารณาใช้นโยบายแคชประชากร นโยบายดังกล่าวจะใช้ร่วมกับนโยบายแคชการค้นหา (สำหรับการอ่านรายการแคช) และนโยบายแคชทำให้ใช้งานไม่ได้ (สำหรับการทำให้รายการเป็นโมฆะ)

ดูวิดีโอนี้สำหรับคำแนะนำเกี่ยวกับนโยบายแคชการตอบกลับ

ลองฟัง

แคช 10 นาที

ตัวอย่างนี้แสดงวิธีเก็บการตอบกลับที่แคชไว้เป็นเวลา 10 นาที

สมมติว่าคุณมี API ที่ URL ต่อไปนี้

http://{org_name}-test.apigee.net/weather/forecastrss?w=23424778

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

คราวนี้ลองสมมติว่าคุณมีนโยบาย ResponseCache ที่กําหนดค่าไว้ดังนี้

<ResponseCache name="ResponseCache">
    <CacheKey>
        <KeyFragment ref="request.queryparam.w" />
    </CacheKey>
    <ExpirySettings>
        <TimeoutInSeconds>600</TimeoutInSeconds>
    </ExpirySettings>
</ResponseCache>

เมื่อพร็อกซี API ได้รับข้อความคำขอสำหรับ URL ต่อไปนี้เป็นครั้งแรก ระบบจะแคชการตอบกลับไว้ ในคำขอที่ 2 ภายใน 10 นาที จะมีการค้นหาแคชเกิดขึ้น ซึ่งจะส่งการตอบกลับที่แคชไว้กลับไปยังแอปโดยไม่มีคำขอที่ส่งต่อไปยังบริการแบ็กเอนด์

http://{org_name}-test.apigee.net/weather/forecastrss?w=23424778

ข้ามการค้นหาแคช

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

ระบบจะประเมินเงื่อนไข SkipCacheLookup ที่ไม่บังคับ (หากกำหนดค่าไว้) ในเส้นทางคำขอ หากเงื่อนไขประเมินเป็น "จริง" ระบบจะข้ามการค้นหาแคชและรีเฟรชแคช

การใช้งานทั่วไปของการรีเฟรชแคชแบบมีเงื่อนไขคือเงื่อนไขที่กำหนดส่วนหัว HTTP ที่เจาะจงซึ่งจะทำให้เงื่อนไขนั้นประเมินค่าเป็น "จริง" อาจมีการกำหนดค่าแอปพลิเคชันไคลเอ็นต์ที่มีสคริปต์ให้ส่งคำขอที่มีส่วนหัว HTTP ที่เหมาะสมเป็นระยะๆ ซึ่งจะทำให้ระบบรีเฟรชแคชการตอบกลับอย่างชัดเจน

ตัวอย่างเช่น สมมติว่ามีการเรียก API ที่ URL ต่อไปนี้:

'http://{org_name}-test.apigee.net/weather/forecastrss?w=23424778' -H "bypass-cache:true"

คราวนี้ให้นึกถึงนโยบาย ResponseCache ต่อไปนี้ที่กำหนดค่าไว้ในพร็อกซีนั้น โปรดทราบว่าเงื่อนไขบายพาสแคชได้รับการตั้งค่าเป็น "จริง"

<ResponseCache name="ResponseCache">
    <CacheKey>
        <KeyFragment ref="request.queryparam.w" />
    </CacheKey>
    <!-- Explicitly refresh the cached response -->
    <SkipCacheLookup>request.header.bypass-cache = "true"</SkipCacheLookup>
    <ExpirySettings>
        <TimeoutInSeconds>600</TimeoutInSeconds>
    </ExpirySettings>
</ResponseCache>

ดูข้อมูลเพิ่มเติมเกี่ยวกับเงื่อนไขได้ที่ตัวแปรโฟลว์และเงื่อนไข

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

การอ้างอิงองค์ประกอบจะอธิบายองค์ประกอบและแอตทริบิวต์ของนโยบาย

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ResponseCache async="false" continueOnError="false" enabled="true" name="Response-Cache-1">
    <DisplayName>Response Cache 1</DisplayName>
    <Properties/>
    <CacheKey>
        <Prefix/>
        <KeyFragment ref="request.uri" />
    </CacheKey>
    <Scope>Exclusive</Scope>
    <ExpirySettings>
        <ExpiryDate/>
        <TimeOfDay/>
        <TimeoutInSeconds ref="flow.variable.here">300</TimeoutInSeconds>
    </ExpirySettings>
    <CacheResource>cache_to_use</CacheResource>
    <CacheLookupTimeoutInSeconds/>
    <ExcludeErrorResponse/>
    <SkipCacheLookup/>
    <SkipCachePopulation/>
    <UseAcceptHeader/>
    <UseResponseCacheHeaders/>
</ResponseCache>

แอตทริบิวต์ <ResponseCache>

<ResponseCache async="false" continueOnError="false" enabled="true" name="Response-Cache-1">

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

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

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

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

ไม่มีข้อมูล จำเป็น
continueOnError

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

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

false ไม่บังคับ
enabled

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

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

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

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

false เลิกใช้

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

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

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

ไม่มีข้อมูล

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

การมีบุคคลอยู่ ไม่บังคับ
Type สตริง

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

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

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

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

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

ไม่มีข้อมูล

สถานที่ตั้ง:

ต้องระบุ

ประเภท:

ไม่มีข้อมูล

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

ระหว่างรันไทม์ ระบบจะเพิ่มค่า <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> ดูข้อมูลเพิ่มเติมได้ที่การทํางานกับคีย์แคช

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

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

<CacheLookupTimeoutInSeconds>30</CacheLookupTimeoutInSeconds>

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

30

สถานที่ตั้ง:

ไม่บังคับ

ประเภท:

จำนวนเต็ม

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

ระบุแคชที่ใช้เก็บข้อความ ไม่อนุญาตให้องค์ประกอบนี้ใช้แคชที่แชร์ซึ่งรวมไว้ คุณควรระบุ CacheResource ตามชื่อ หากต้องการล้างรายการที่มีอยู่ในแคชได้จากการดูแลระบบ ดูข้อมูลเพิ่มเติมได้ที่แคช

<CacheResource>cache_to_use</CacheResource>

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

ไม่มีข้อมูล

สถานที่ตั้ง:

ไม่บังคับ

ประเภท:

สตริง

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

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

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

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

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

ไม่มีข้อมูล

สถานที่ตั้ง:

ไม่บังคับ

ประเภท:

ไม่มีข้อมูล

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

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

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

Attributes

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

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

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

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

<Prefix>prefix_string</Prefix>

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

ไม่มีข้อมูล

สถานที่ตั้ง:

ไม่บังคับ

ประเภท:

สตริง

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

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

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

ปัจจุบันนโยบายนี้แคชการตอบกลับ HTTP ที่มีรหัสสถานะใดก็ได้ที่เป็นไปได้โดยค่าเริ่มต้น ซึ่งหมายความว่าทั้งการตอบกลับที่สำเร็จและข้อผิดพลาดจะได้รับการแคชไว้ เช่น ระบบจะแคชการตอบกลับที่มีทั้งรหัสสถานะ 2xx และ 3xx ไว้โดยค่าเริ่มต้น

ตั้งค่าองค์ประกอบนี้เป็น true หากไม่ต้องการแคชการตอบกลับเป้าหมายที่มีรหัสสถานะข้อผิดพลาดของ HTTP ระบบจะแคชเฉพาะการตอบกลับที่มีรหัสสถานะจาก 200 ถึง 205 หากองค์ประกอบนี้เป็นจริง ต่อไปนี้เป็นรหัสสถานะ HTTP เพียงรหัสเดียวที่ Edge นับเป็นรหัส "สำเร็จ" และคุณไม่สามารถเปลี่ยนแปลงการเชื่อมโยงนี้ได้

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

หมายเหตุ: ในรุ่นที่จะออกในอนาคต (เร็วๆ นี้) การตั้งค่าเริ่มต้นขององค์ประกอบนี้จะเปลี่ยนเป็น "จริง" โปรดดูรายละเอียดที่บันทึกประจำรุ่นของ Apigee

<ExcludeErrorResponse>true</ExcludeErrorResponse>

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

false

สถานที่ตั้ง:

ไม่บังคับ

ประเภท:

บูลีน

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

ระบุเวลาที่รายการแคชควรหมดอายุ หากมี <TimeoutInSeconds> จะลบล้างทั้ง <TimeOfDay> และ <ExpiryDate>

<ExpirySettings>
  <TimeOfDay ref="time_variable">expiration_time</TimeOfDay>
  <TimeoutInSeconds ref="duration_variable">seconds_until_expiration</TimeoutInSeconds>
  <ExpiryDate ref="date_variable">expiration_date</ExpiryDate>
</ExpirySettings>

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

ไม่มีข้อมูล

สถานที่ตั้ง:

ต้องระบุ

ประเภท:

ไม่มีข้อมูล

องค์ประกอบ <ExpirySettings>/<ExpiryDate>

ระบุวันที่รายการแคชควรหมดอายุ ใช้แบบฟอร์ม mm-dd-yyyy หากมี <TimeoutInSeconds> ซึ่งเป็นข้างเคียงขององค์ประกอบนี้จะลบล้าง <ExpiryDate>

<ExpirySettings>
    <ExpiryDate ref="{date_variable}">expiration_date</ExpiryDate>
</ExpirySettings>

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

ไม่มีข้อมูล

สถานที่ตั้ง:

ไม่บังคับ

ประเภท:

สตริง

Attributes

<ExpiryDate ref="" />
แอตทริบิวต์ คำอธิบาย ค่าเริ่มต้น การมีบุคคลอยู่ ประเภท
อ้างอิง

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

ไม่มีข้อมูล ไม่บังคับ สตริง

องค์ประกอบ <ExpirySettings>/<TimeOfDay>

ช่วงเวลาของวันที่รายการแคชควรหมดอายุ ใช้แบบฟอร์ม hh:mm:ss หากมี <TimeoutInSeconds> ซึ่งเป็นข้างเคียงขององค์ประกอบนี้จะลบล้าง <TimeOfDay>

ป้อนเวลาของวันในรูปแบบ HH:mm:ss โดยที่ HH จะแสดงชั่วโมงในรูปแบบเวลา 24 ชั่วโมง เช่น 14:30:00 น. สําหรับ 2:30 น. ในตอนบ่าย

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

<ExpirySettings>
    <TimeOfDay ref="time_variable">expiration_time</TimeOfDay>
</ExpirySettings>

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

ไม่มีข้อมูล

สถานที่ตั้ง:

ไม่บังคับ

ประเภท:

สตริง

Attributes

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

องค์ประกอบ <ExpirySettings>/<TimeoutInSec>

จำนวนวินาทีที่รายการแคชควรหมดอายุ

องค์ประกอบ <ExpirySettings>/<TimeoutInSeconds>

จำนวนวินาทีที่รายการแคชควรหมดอายุ องค์ประกอบนี้จะลบล้าง <TimeOfDay> และ <ExpiryDate> ระดับข้างเคียง (หากมี)

<ExpirySettings>
    <TimeoutInSeconds ref="duration_variable">seconds_until_expiration</TimeoutInSeconds>
</ExpirySettings>

หมายเหตุ: ระบุค่าระยะหมดเวลาเริ่มต้นที่จะใช้หากการอ้างอิงไม่ได้รับค่าจาก duration_variable

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

ไม่มีข้อมูล

สถานที่ตั้ง:

ไม่บังคับ

ประเภท:

สตริง

Attributes

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

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

การแจกแจงที่ใช้เพื่อสร้างคำนำหน้าสำหรับคีย์แคชเมื่อไม่ได้ระบุองค์ประกอบ <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> ด้วย 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

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

คำนำหน้าเป็น 1 ใน 2 รูปแบบต่อไปนี้

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

คีย์แคชที่แทรกไว้ข้างหน้าในแบบฟอร์ม orgName__envName__apiProxyName__deployedRevisionNumber__proxyNameITargetName

เช่น สตริงทั้งหมดอาจมีลักษณะดังนี้

apifactory__test__weatherapi__16__default__apiAccessToken
.

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

กำหนดนิพจน์ที่หากประเมินค่าเป็นจริงขณะรันไทม์ ให้ระบุว่าควรข้ามการค้นหาแคชและรีเฟรชแคช โปรดดูวิดีโอนี้เกี่ยวกับการใช้ SkipCacheLookup

<SkipCacheLookup>variable_condition_expression</SkipCacheLookup>

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

ไม่มีข้อมูล

สถานที่ตั้ง:

ไม่บังคับ

ประเภท:

สตริง

จากตัวอย่างต่อไปนี้ หากตั้งค่าตัวแปรบายพาสแคชเป็น "จริง" ในส่วนหัวขาเข้า ระบบจะข้ามการค้นหาแคชและรีเฟรชแคช

<SkipCacheLookup>request.header.bypass-cache = "true"</SkipCacheLookup>

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

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

<SkipCachePopulation>variable_condition_expression</SkipCachePopulation>

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

ไม่มีข้อมูล

สถานที่ตั้ง:

ไม่บังคับ

ประเภท:

สตริง

ตัวอย่างเช่น ค่าต่อไปนี้จะข้ามการเขียนแคชหากรหัสสถานะการตอบสนองคือ 400 ขึ้นไป

<SkipCachePopulation>response.status.code >= 400</SkipCachePopulation>

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

ตั้งค่าเป็น true เพื่อให้คีย์แคชของรายการแคชการตอบกลับต่อท้ายด้วยค่าจากส่วนหัว "ยอมรับ" คำตอบ

Edge ใช้ส่วนหัวของคำขอ Accept, Accept-Encoding, Accept-Language และ Accept-Charset เมื่อคำนวณคีย์แคช วิธีนี้จะป้องกันไม่ให้ไคลเอ็นต์ได้รับประเภทสื่อที่ไม่ได้ขอ

ตัวอย่างเช่น สมมติว่ามีคำขอ 2 รายการมาจาก URL เดียวกัน โดยที่คำขอแรกยอมรับ gzip และคำขอที่ 2 ไม่ ระบบจะแคชคำขอแรก และรายการที่แคชไว้ (อาจจะ) เป็นการตอบสนองด้วย gzip คำขอที่ 2 จะอ่านค่าที่แคชไว้และอาจส่งคืนรายการที่ gzip ไปยังไคลเอ็นต์ที่อ่าน gzip ไม่ได้

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

<UseAcceptHeader>false</UseAcceptHeader>

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

false

สถานที่ตั้ง:

ไม่บังคับ

ประเภท:

บูลีน

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

ตั้งค่าเป็น true เพื่อให้พิจารณาส่วนหัวการตอบกลับ HTTP เมื่อตั้งค่า "time to Live" (TTL) ของการตอบกลับในแคช เมื่อเป็นจริง Edge จะพิจารณาค่าของส่วนหัวการตอบกลับต่อไปนี้ เพื่อเปรียบเทียบค่ากับค่าที่กําหนดโดย <ExpirySettings> เมื่อตั้งค่า Time to Live

  • Cache-Control s-maxage
  • Cache-Control max-age
  • Expires

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

<UseResponseCacheHeaders>false</UseResponseCacheHeaders>

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

false

สถานที่ตั้ง:

ไม่บังคับ

ประเภท:

บูลีน

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

ขนาดสูงสุดสำหรับออบเจ็กต์ที่แคชไว้แต่ละรายการคือ 256 KB (สำหรับข้อมูลโดยละเอียดเกี่ยวกับวิธีที่ Edge ประมวลผลแคช โปรดดูแคชภายใน)

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

โปรดดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีที่ Edge จัดการส่วนหัวการตอบกลับด้วยนโยบาย ResponseCache ที่หัวข้อการรองรับส่วนหัวการตอบกลับ HTTP

การตั้งค่าวันหมดอายุของรายการแคช

คุณตั้งค่าการหมดอายุของรายการแคชการตอบกลับ (เวลาที่จะเผยแพร่) ได้โดยใช้องค์ประกอบ <ExpirySettings> เช่นเดียวกับนโยบาย แย้งการแคช ในนโยบาย ResponseCache คุณยังให้ Edge พิจารณาส่วนหัวการตอบกลับได้ด้วยหากมี

หากต้องการใช้ส่วนหัวการตอบกลับ คุณต้องตั้งค่าองค์ประกอบ <UseResponseCacheHeaders> เป็น "จริง" การตั้งค่าดังกล่าวทำให้ Edge พิจารณาส่วนหัวของการตอบกลับ และเปรียบเทียบกับส่วนหัวที่ <ExpirySettings> ตั้งไว้ จากนั้นใช้ค่าต่ำสุดระหว่าง 2 ค่านี้ เมื่อพิจารณาส่วนหัวการตอบกลับ Edge จะเลือกค่าที่ใช้ได้ตามที่อธิบายไว้ดังต่อไปนี้

ตัวอย่างเช่น สมมติว่าระบบแคชการตอบกลับไว้ด้วยค่าต่อไปนี้

  • ไม่มีค่า Cache-Control s-maxage
  • ค่า Cache-Control max-age เท่ากับ 300
  • วันที่ Expires ใน 3 วัน
  • ค่า <ExpirySettings> TimeoutInSeconds เท่ากับ 600

ในกรณีนี้ ระบบจะใช้ค่า Cache-Control max-age สำหรับ TTL เนื่องจากค่าดังกล่าวต่ำกว่าค่า <ExpirySettings> และไม่มีค่า Cache-Control s-maxage (ซึ่งมีความสำคัญมากกว่า max-age)

การกำหนดค่าคีย์แคช

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

สำหรับข้อมูลทั่วไปเกี่ยวกับการกำหนดค่าคีย์แคช โปรดดูการทำงานกับคีย์แคช ดูข้อมูลเกี่ยวกับการใช้ส่วนหัว "ยอมรับ" ได้ที่ <UseAcceptHeader>

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

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

ตัวแปรโฟลว์

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

ตัวแปร ประเภท สิทธิ์ คำอธิบาย
responsecache.{policy_name}.cachename สตริง อ่านอย่างเดียว แสดงแคชที่ใช้ในนโยบาย
responsecache.{policy_name}.cachekey สตริง อ่านอย่างเดียว แสดงคีย์ที่ใช้
responsecache.{policy_name}.cachehit บูลีน อ่านอย่างเดียว เป็นจริงหากการดำเนินการนโยบายสำเร็จ
responsecache.{policy_name}.invalidentry บูลีน อ่านอย่างเดียว เป็นจริงหากรายการแคชไม่ถูกต้อง

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

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

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

ไม่มีข้อมูล

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

นโยบายนี้จะไม่แสดงข้อผิดพลาดเกี่ยวกับรันไทม์

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

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

ชื่อข้อผิดพลาด สาเหตุ แก้ไข
InvalidTimeout หากตั้งค่าองค์ประกอบ <CacheLookupTimeoutInSeconds> ของนโยบาย ResponseCache เป็นตัวเลขติดลบ การติดตั้งใช้งานพร็อกซี API จะไม่สําเร็จ
InvalidCacheResourceReference ข้อผิดพลาดนี้เกิดขึ้นหากองค์ประกอบ <CacheResource> ในนโยบาย ResponseCache เป็นชื่อที่ไม่มีอยู่ในสภาพแวดล้อมที่ทำให้พร็อกซี API ใช้งานได้
ResponseCacheStepAttachmentNotAllowedReq ข้อผิดพลาดนี้เกิดขึ้นหากมีการแนบนโยบาย ResponseCache เดียวกันกับเส้นทางคําขอหลายเส้นทางภายในขั้นตอนใดก็ตามของพร็อกซี API
ResponseCacheStepAttachmentNotAllowedResp ข้อผิดพลาดนี้เกิดขึ้นหากมีการแนบนโยบาย ResponseCache เดียวกันกับเส้นทางการตอบกลับหลายเส้นทางภายในโฟลว์ใดๆ ของพร็อกซี API
InvalidMessagePatternForErrorCode ข้อผิดพลาดนี้เกิดขึ้นหากองค์ประกอบ <SkipCacheLookup> หรือองค์ประกอบ <SkipCachePopulation> ในนโยบาย ResponseCache มีเงื่อนไขที่ไม่ถูกต้อง
CacheNotFound ข้อผิดพลาดนี้เกิดขึ้นหากไม่ได้สร้างแคชที่ระบุในข้อความแสดงข้อผิดพลาดบนคอมโพเนนต์โปรแกรมประมวลผลข้อความที่เฉพาะเจาะจง

ตัวแปรของข้อผิดพลาด

ไม่มีข้อมูล

ตัวอย่างการตอบกลับข้อผิดพลาด

ไม่มีข้อมูล

สคีมา

นโยบายแต่ละประเภทจะกำหนดโดยสคีมา XML (.xsd) โปรดทราบว่าสคีมานโยบายมีอยู่ใน GitHub