คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่
เอกสารประกอบของ Apigee X info
หัวข้อนี้อธิบายวิธีที่ Edge จัดการส่วนหัวการแคช HTTP/1.1 เมื่อคุณใช้นโยบาย ResponseCache ปัจจุบัน Apigee Edge รองรับส่วนหัวและ คำสั่งการแคช HTTP/1.1 เพียงบางส่วน (ฟีเจอร์ที่ไม่รองรับจะแสดงอยู่ในหัวข้อนี้) ที่ได้รับจากเซิร์ฟเวอร์เป้าหมาย (ต้นทาง) แบ็กเอนด์
นอกจากนี้ Edge ยังดำเนินการตามคำสั่งของส่วนหัวบางรายการด้วย ในบางกรณี
ส่วนหัวแคช HTTP/1.1 เหล่านี้จะลบล้างลักษณะการทำงานที่ระบุไว้ในนโยบาย ResponseCache
เช่น หากเซิร์ฟเวอร์แบ็กเอนด์แสดงส่วนหัว Cache-Control คุณสามารถ
ให้คำสั่ง s-maxage ของส่วนหัวลบล้างการตั้งค่าการหมดอายุอื่นๆ
ในนโยบายได้
| ส่วนหัว | การสนับสนุน |
|---|---|
| Cache-Control | รองรับในการตอบกลับที่แสดงจากเซิร์ฟเวอร์ต้นทางแบ็กเอนด์ แต่ไม่รองรับในคำขอของไคลเอ็นต์ Edge รองรับคำสั่งเพียงบางส่วน |
| Expires | รองรับ สามารถลบล้างได้ |
| แท็กเอนทิตี (ETag) | ลักษณะการทำงานเฉพาะสำหรับ If-Match และ If-None-Match. |
| If-Modified-Since | ในคำขอ GET ระบบจะส่งส่วนหัวไปยังเซิร์ฟเวอร์ต้นทางแม้ว่าจะมีรายการแคชที่ถูกต้องอยู่ก็ตาม |
| Accept-Encoding | Edge จะส่งการตอบกลับแบบบีบอัดหรือไม่บีบอัดขึ้นอยู่กับส่วนหัวขาเข้า |
Cache-Control
Apigee Edge รองรับส่วนหัว Cache-Control เฉพาะในการตอบกลับที่แสดงจาก
เซิร์ฟเวอร์ต้นทางแบ็กเอนด์ (ข้อกำหนดเฉพาะของ HTTP/1.1 อนุญาตให้ใช้ส่วนหัว Cache-Control ทั้งใน
คำขอของไคลเอ็นต์และการตอบกลับของเซิร์ฟเวอร์ต้นทาง) เซิร์ฟเวอร์ต้นทางสามารถรวมทั้งปลายทางเป้าหมาย
ที่กำหนดไว้ในพร็อกซี API ของ Apigee Edge และปลายทางที่สร้างขึ้นโดยใช้การเรียก API ของ TargetServer
ข้อจำกัดในการรองรับ Cache-Control
Apigee Edge รองรับความสามารถของส่วนหัวการตอบกลับ Cache-Control เพียงบางส่วน
ที่กำหนดไว้ในข้อกำหนดเฉพาะของ HTTP/1.1 โปรดทราบว่า
- Apigee Edge ไม่รองรับส่วนหัว
Cache-Controlที่มาพร้อมกับคำขอขาเข้า ของไคลเอ็นต์ - Apigee Edge รองรับเฉพาะแนวคิดของแคชสาธารณะ (ตามข้อกำหนดเฉพาะของ HTTP
Cache-Controlสามารถเป็นสาธารณะ (แชร์) หรือส่วนตัว (ผู้ใช้รายเดียว )) - Apigee Edge รองรับเฉพาะคำสั่งการตอบกลับ
Cache-Controlเพียงบางส่วนใน ข้อกำหนดเฉพาะของ HTTP/1.1 ดูรายละเอียดได้ที่การรองรับคำสั่งส่วนหัวการตอบกลับ Cache-Control
การรองรับคำสั่งส่วนหัวการตอบกลับ Cache-Control
Apigee รองรับคำสั่งเพียงบางส่วนจากข้อกำหนดเฉพาะของ HTTP/1.1 ในการตอบกลับจากเซิร์ฟเวอร์ต้นทาง ตารางต่อไปนี้อธิบายการรองรับคำสั่งส่วนหัวการตอบกลับ Cache-Control ของ HTTP ใน Apigee Edge
ดูข้อมูลโดยละเอียดเพิ่มเติมเกี่ยวกับคำสั่งที่แสดงไว้ที่นี่ได้ที่ Cache-Control ในข้อกำหนดเฉพาะของ HTTP/1.1
| คำสั่ง Cache-Control | วิธีที่ Apigee Edge ประมวลผลคำสั่ง |
cache-extension |
ไม่รองรับ |
max-age |
หากนโยบาย ResponseCache ตั้งค่าองค์ประกอบ คำสั่งนี้จะถูกลบล้างโดยคำสั่ง |
must-revalidate |
ไม่รองรับ Apigee Edge จะลบรายการแคชทั้งหมดทันทีที่ หมดอายุ |
no-cache |
Edge จะแคชการตอบกลับจากต้นทาง แต่ต้องตรวจสอบอีกครั้งกับเซิร์ฟเวอร์ต้นทาง ก่อนจึงจะใช้เพื่อตอบสนองคำขอของไคลเอ็นต์ในภายหลังได้ กฎนี้ช่วยให้ต้นทาง แสดงการตอบกลับ 304 Not Modified เพื่อระบุว่าควรแสดงการตอบกลับจากแคช ซึ่งช่วยประหยัดการประมวลผลที่จำเป็นในการแสดงการตอบกลับทั้งหมด หากเซิร์ฟเวอร์ต้นทางแสดงการตอบกลับแบบเต็ม ระบบจะแทนที่รายการแคชที่มีอยู่ ระบบจะละเว้นชื่อฟิลด์ที่ระบุด้วยคำสั่งนี้ |
no-store |
ไม่รองรับ |
no-transform |
ไม่รองรับ |
private |
ไม่รองรับ หากได้รับคำสั่งนี้ ระบบจะไม่แคชการตอบกลับจากต้นทาง และจะละเว้นชื่อฟิลด์ |
proxy-revalidate |
ไม่รองรับ Apigee Edge จะลบรายการแคชทั้งหมดทันทีที่ หมดอายุ |
public |
Edge จะแคชการตอบกลับจากต้นทาง แม้ว่าคำสั่งอื่นๆ จะระบุไว้เป็นอย่างอื่นก็ตาม ตามข้อกำหนดเฉพาะของ HTTP/1.1 ข้อกำหนดนี้มีข้อยกเว้นเพียงกรณีเดียวคือหากการตอบกลับมีส่วนหัว Authorization |
s-maxage |
หากนโยบาย ResponseCache ตั้งค่าองค์ประกอบ คำสั่งนี้จะลบล้างคำสั่ง |
Expires
เมื่อตั้งค่าแฟล็ก UseResponseCacheHeaders ในนโยบาย ResponseCache เป็น
true Edge จะใช้ส่วนหัว Expires เพื่อกำหนด Time to Live
(TTL) ของรายการที่แคชไว้ได้ ส่วนหัวนี้จะระบุวันที่/เวลาหลังจากนั้นระบบจะถือว่ารายการแคชของการตอบกลับ
หมดอายุ ส่วนหัวนี้ช่วยให้เซิร์ฟเวอร์ส่งสัญญาณได้ว่าเมื่อใดที่สามารถแสดงค่าที่แคชไว้
ตามการประทับเวลา
รูปแบบวันที่ที่ยอมรับได้สำหรับส่วนหัว Expires อธิบายไว้ในข้อกำหนดเฉพาะของ HTTP/1.1
เช่น
Expires: Thu, 01 Dec 1994 16:00:00 GMT
ดูข้อมูลโดยละเอียดเกี่ยวกับรูปแบบวันที่/เวลาของ HTTP ได้ที่ รูปแบบวันที่/เวลา ในข้อกำหนดเฉพาะของ HTTP/1.1
ดูข้อมูลเพิ่มเติมเกี่ยวกับส่วนหัว Expires ได้ที่
คำจำกัดความของฟิลด์ส่วนหัว
ในข้อกำหนดเฉพาะของ HTTP/1.1
ETag
แท็กเอนทิตี (ETag) คือตัวระบุที่เชื่อมโยงกับทรัพยากรที่ขอ เซิร์ฟเวอร์สามารถใช้ ETag เพื่อตรวจสอบว่าทรัพยากรที่ขอและทรัพยากรที่แคชไว้ที่เชื่อมโยงกันตรงกันหรือไม่ เช่น เซิร์ฟเวอร์อาจแคชการตอบกลับอีกครั้งหากไม่ตรงกับสิ่งที่แคชไว้ในปัจจุบัน และอาจแสดงทรัพยากรที่แคชไว้หาก ETag ตรงกัน
เมื่อปลายทางเป้าหมายส่งการตอบกลับกลับไปยัง Edge พร้อม ETag, Edge จะแคช ETag พร้อม กับการตอบกลับ
อ่านข้อมูลเพิ่มเติมเกี่ยวกับแท็กเอนทิตีได้ใน พารามิเตอร์โปรโตคอล ในข้อกำหนดเฉพาะของ HTTP/1.1
If-Match
เมื่อใช้ส่วนหัวคำขอ If-Match เอนทิตีที่แคชไว้จะเป็นปัจจุบันหาก ETag ในส่วนหัว
ตรงกับ ETag ที่แคชไว้ ระบบจะส่งคำขออื่นๆ นอกเหนือจาก GET ที่ระบุส่วนหัว If-Match
ไปยังเซิร์ฟเวอร์ต้นทางเพื่อให้แน่ใจว่าสิ่งอำนวยความสะดวกในการแคชของต้นทางมี
โอกาสประมวลผลคำขอ
อ่านข้อมูลเพิ่มเติมเกี่ยวกับ If-Match ได้ใน
คำจำกัดความของฟิลด์ส่วนหัว
ในข้อกำหนดเฉพาะของ HTTP/1.1
หาก Edge ได้รับคำขอ GET ขาเข้าจากไคลเอ็นต์ที่มีส่วนหัว If-Match
| หาก | จากนั้น |
|---|---|
ส่วนหัว If-Match ระบุ ETag อย่างน้อย 1 รายการ |
|
ส่วนหัว If-Match ระบุ "*" |
ระบบจะส่งคำขอไปยังเซิร์ฟเวอร์ต้นทางเพื่อให้แน่ใจว่าสิ่งอำนวยความสะดวกในการแคชของต้นทางมีโอกาสประมวลผลคำขอ |
| พบรายการแคชที่มี URI คำขอเดียวกัน แต่มีเพียง ETag ที่ไม่เข้มงวด | เซิร์ฟเวอร์ต้นทางต้องตรวจสอบรายการอีกครั้งก่อนที่จะแสดงรายการให้ ไคลเอ็นต์ |
| ETag มาจากเซิร์ฟเวอร์ต้นทาง | ระบบจะแสดง ETag ให้ไคลเอ็นต์โดยไม่มีการเปลี่ยนแปลง |
If-None-Match
เมื่อใช้ส่วนหัว If-None-Match เอนทิตีที่แคชไว้จะเป็นปัจจุบันหาก ETag ในส่วนหัว does not match ETag ที่แคชไว้ ระบบจะส่งคำขอนอกเหนือจาก GET ที่มีส่วนหัวนี้
ไปยังเซิร์ฟเวอร์ต้นทาง
หาก Edge ได้รับคำขอ GET ขาเข้าที่มีส่วนหัวนี้
| หาก | จากนั้น |
|---|---|
ส่วนหัว If-None-Match ระบุ ETag อย่างน้อย 1 รายการ |
|
|
ส่วนหัว |
Edge จะแสดงสถานะ 304 Not Modified |
| พบรายการแคชที่มี URI คำขอเดียวกัน แต่มีเพียง ETag ที่ไม่เข้มงวด | เซิร์ฟเวอร์ต้นทางต้องตรวจสอบรายการอีกครั้งก่อนที่ Edge จะแสดงรายการให้ ไคลเอ็นต์ |
| Edge ได้รับ ETag จากเซิร์ฟเวอร์ต้นทาง | ระบบจะแสดง ETag ให้ไคลเอ็นต์โดยไม่มีการเปลี่ยนแปลง |
If-Modified-Since
หาก Apigee Edge ได้รับส่วนหัว If-Modified-Since ในคำขอ GET ระบบจะ
ส่งส่วนหัวไปยังเซิร์ฟเวอร์ต้นทางแม้ว่าจะมีรายการแคชที่ถูกต้องอยู่ก็ตาม
ซึ่งจะช่วยให้แน่ใจว่าระบบจะพิจารณาการอัปเดตทรัพยากรที่ไม่ได้ผ่าน Apigee Edge
หากเซิร์ฟเวอร์ต้นทางแสดงเอนทิตีใหม่ Edge จะแทนที่รายการแคชที่มีอยู่ด้วยค่าใหม่
หากเซิร์ฟเวอร์แสดงสถานะ 304 Not Modified, Edge จะแสดงค่าการตอบกลับ
หากส่วนหัว Last-Modified ของการตอบกลับที่แคชไว้ระบุว่าไม่มีการเปลี่ยนแปลง
Accept-Encoding
เมื่อคำขอขาเข้ามีส่วนหัว Accept-Encoding ที่มีค่าเป็น
gzip, deflate หรือ compress เซิร์ฟเวอร์ต้นทางจะตอบกลับด้วย
ข้อมูลที่บีบอัด เมื่อคำขอในภายหลังไม่มีส่วนหัว Accept-Encoding คำขอเหล่านั้นจะคาดหวังการตอบกลับแบบไม่บีบอัด กลไกการแคชการตอบกลับของ Apigee สามารถส่ง
การตอบกลับทั้งแบบบีบอัดและไม่บีบอัดได้โดยขึ้นอยู่กับส่วนหัวขาเข้าโดยไม่ต้องกลับไปที่เซิร์ฟเวอร์ต้นทาง
คุณสามารถเพิ่มค่าส่วนหัว Accept ลงในคีย์แคชเพื่อให้คีย์มีความหมายมากขึ้นสำหรับ แต่ละรายการที่แคชไว้ ดูรายละเอียดเพิ่มเติมได้ที่ "การกำหนดค่าคีย์แคช" ใน นโยบายแคชการตอบกลับ