การทํางานกับคีย์แคช

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

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

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

คุณสร้างคีย์แคชได้ด้วยองค์ประกอบการกำหนดค่านโยบายแคชดังต่อไปนี้

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

ค่าเหล่านี้จะต่อกันในรูปแบบต่อไปนี้ โดยมีค่า <Scope> หรือ <Prefix> ที่คั่นด้วยค่า KeyFragment โดยใช้ขีดล่าง 2 ขีด ค่า KeyFragment หลายค่าจะคั่นด้วยขีดล่าง 2 ขีดเช่นกัน

ขอบเขต | prefix__keyfulfillment[__keyfulfillment]

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

การใช้ <CacheKey>

องค์ประกอบ <CacheKey> จะกำหนดค่าวิธีที่ Edge จะสร้างตัวระบุที่ไม่ซ้ำกัน (คีย์) สำหรับรายการแคชแต่ละรายการที่สร้างขึ้น เมื่อ Edge ดึงค่าที่แคชไว้ ระบบจะใช้คีย์แคชเพื่อหาค่าที่ถูกต้อง ในนโยบาย ResponseCache การกำหนดค่า 1 รายการจะกำหนดคีย์สำหรับทั้งการแคชและการดึงข้อมูล ในนโยบาย addeCache และ LookupCache แต่ละนโยบายต้องมีองค์ประกอบ <CacheKey> ที่เหมือนกัน เพื่อให้แน่ใจว่าค่าที่ดึงมาจากแคชสอดคล้องกับค่าที่ใส่ไว้

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

ตัวอย่างเช่น การกำหนดค่าต่อไปนี้จะสร้างค่า hello__world เพื่อใช้ในคีย์แคช

<CacheKey>
    <KeyFragment>hello</KeyFragment>
    <KeyFragment>world</KeyFragment>
<CacheKey>

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

<KeyFragment ref="variable_name"/>

เช่น หากต้องการทำให้ค่าคีย์แคชรวมประเภทเนื้อหาของข้อความคำขอเข้าด้วยกัน ให้ทำดังนี้

<KeyFragment ref="request.header.Content-Type"/>

ในการกำหนดค่าต่อไปนี้ ตัวแปร request.header.Content-Type มีค่า application/json

<CacheKey>
  <KeyFragment>apiAccessToken</KeyFragment>
  <KeyFragment ref="request.header.Content-Type" />
  <KeyFragment>bar</KeyFragment>
</CacheKey>

ซึ่งส่งผลให้คีย์แคชที่ลงท้ายด้วย apiAccessToken__application/json__bar

ดูรายการตัวแปรที่ใช้ได้ที่หัวข้อข้อมูลอ้างอิงตัวแปร

คีย์แคชที่ได้มาจากพารามิเตอร์การค้นหา

เมื่อใช้ตัวแปร เช่น request.queryparam.<queryparam_name> และ request.querystring คุณสามารถกำหนดค่าคีย์แคชเพื่อให้คีย์ประกอบด้วยส่วนต่างๆ ของสตริงคําค้นหาของคําขอ ตัวอย่างเช่น URL ต่อไปนี้ใช้พารามิเตอร์การค้นหา 2 รายการ ได้แก่ param1 และ param2 ที่คุณสามารถใช้ในคีย์แคชได้

http://myaccount.apigee.net/mydata?param1=value1&param2=value2

องค์ประกอบ <CacheKey> จะรวมค่าเหล่านี้เข้ากับการกำหนดค่าได้ดังตัวอย่างต่อไปนี้

<CacheKey>
    <KeyFragment ref="request.queryparam.param1" />
    <KeyFragment ref="request.queryparam.param2" />
<CacheKey>

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

other_key_parts__value1__value2

โปรดทราบว่าเมื่อคุณใช้ตัวแปรเพื่อแทรกค่าจากพารามิเตอร์ ค่าจะต่อกันตามลำดับที่แนะนำโดยลำดับองค์ประกอบ <KeyFragment> นอกจากนี้ โปรดทราบว่า Edge จะใช้เฉพาะค่าที่คุณอ้างอิงร่วมกับองค์ประกอบ <KeyFragment> โดยเฉพาะเท่านั้น หากรายการพารามิเตอร์การค้นหาคําขอแตกต่างกัน ระบบจะไม่พิจารณารูปแบบต่างๆ ในคีย์แคช

อีกวิธีหนึ่งคือการใช้ตัวแปร request.querystring ซึ่งจะแทรกสตริงของพารามิเตอร์ทั้งหมดโดยตรงเป็นส่วนหนึ่งของคีย์แคช โปรดทราบว่าแม้วิธีนี้จะพิจารณาพารามิเตอร์ทั้งหมด แต่หากลำดับของพารามิเตอร์แตกต่างกันไปในแต่ละคำขอ คีย์ก็จะต่างกันไป กล่าวคือ param1=value1&param2=value2 และ param2=value2&param1=value1 ไม่ได้ส่งผลให้มีค่าคีย์แคชเดียวกัน

ดูรายการตัวแปรที่ใช้ได้ที่หัวข้อข้อมูลอ้างอิงตัวแปร

การใช้ <Scope> และ <Prefix>

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

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

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

การกำหนดค่า ผลลัพธ์
<Scope>Global</Scope> mycompany__prod__.

หากคุณใช้ขอบเขตส่วนกลางกับคีย์แคชที่ระบุไว้ข้างต้น ผลลัพธ์จะเป็นดังนี้

การกำหนดค่า ผลลัพธ์
<Scope>Global</Scope>
<CacheKey>
    <KeyFragment>hello</KeyFragment>
    <KeyFragment>world</KeyFragment>
<CacheKey>
mycompany__prod__hello__world.

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

orgName__envName__apiProxyName__deployedRevisionNumber__proxy|TargetName__[serializedCacheKey]

เช่น คีย์แคชที่สร้างจากค่าเฉพาะสำหรับ <Scope> จะมีลักษณะดังนี้

apifactory__test__weatherapi__16__default__apiAccessToken