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

คุณกำลังดูเอกสารประกอบ 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__keyfragment[__keyfragment]

ด้วยแคชการตอบกลับ นโยบาย คุณสามารถเลือกต่อท้ายคีย์แคชนี้ด้วยค่าจากการตอบกลับ "ยอมรับ" ส่วนหัว

การใช้ <CacheKey>

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

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

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

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

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

<KeyFragment ref="variable_name"/>

ตัวอย่างเช่น ในการทำให้ค่าคีย์แคชรวม "Content-Type" ของข้อความคำขอ ให้ทำดังนี้

<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