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

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

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

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

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

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

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

scope | prefix__keyfragment[__keyfragment]

เมื่อใช้นโยบาย Response Cache คุณสามารถเลือกที่จะต่อท้ายคีย์แคชนี้ด้วยค่าจากส่วนหัว Accept ของการตอบกลับ

การใช้ <CacheKey>

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

ในรันไทม์ คีย์แคชจะมีค่า param ที่ผสานกัน ดังตัวอย่างต่อไปนี้

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> "Global" ซึ่งเป็นขอบเขตกว้างที่สุดจะแสดง ชื่อองค์กรและสภาพแวดล้อม ดังนั้น หากพร็อกซีของคุณได้รับการติดตั้งใช้งานในองค์กรที่ชื่อว่า 'mycompany' และสภาพแวดล้อมที่ชื่อว่า 'prod' ค่าที่นำหน้าจะเป็นดังนี้

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

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

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

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

orgName__envName__apiProxyName__deployedRevisionNumber__proxy|TargetName__[serializedCacheKey]

ตัวอย่างเช่น คีย์แคชที่สร้างขึ้นจากการใช้ค่า Exclusive สำหรับ <Scope> จะมีลักษณะดังนี้

apifactory__test__weatherapi__16__default__apiAccessToken