ฉันพยายามให้ Apache แคชผลลัพธ์จากการเรียกใช้สคริปต์ PHP ราคาแพง (เข้าถึงเซิร์ฟเวอร์ของบุคคลที่สามซึ่งมีการจำกัดอัตรา) แต่ดูเหมือนว่าไคลเอนต์จะส่ง ถ้าแก้ไขตั้งแต่
ส่วนหัวแคชถูกข้าม
ดิสก์ CacheEnable /script.php
เปิดแคชล็อค
CacheLockMaxAge 60
CacheIgnoreHeaders Set-คุกกี้
# ป้องกันไม่ให้ไคลเอนต์ขอเนื้อหาที่ไม่ได้แคชอย่างชัดเจน
CacheIgnoreCacheControl บน
เปิดใช้ CacheDetailHeader
สคริปต์ php ตั้งค่าส่วนหัวต่อไปนี้ในการตอบสนอง:
แก้ไขล่าสุด
ตั้งเป็นเวลาปัจจุบัน เช่น อา. 20 มิ.ย. 2564 11:30:20 GMT
หมดอายุ
ตั้งเป็นเวลาปัจจุบัน บวก 60 วินาที เช่น อา. 20 มิถุนายน 2564 11:31:20 GMT
ถ้าฉันออกคำขอต่อไปนี้:
รับ /script.php HTTP/1.1
โฮสต์: example.com
การเชื่อมต่อ: ปิด
จากนั้นการแคชจะทำงานได้อย่างถูกต้องและสคริปต์ php จะทำงานเพียงนาทีละครั้งโดยมีการร้องขออื่น ๆ จากแคช
อย่างไรก็ตามการออกคำขอดังต่อไปนี้:
รับ /script.php HTTP/1.1
โฮสต์: example.com
การเชื่อมต่อ: ปิด
If-Modified-Since: อา. 20 มิ.ย. 2021 11:30:30 GMT
เรียกใช้สคริปต์ php ทุกครั้งด้วย:
X-Cache-Detail: "แคชหายไป: กำลังพยายามบันทึกเอนทิตี" จาก example.com
ในการตอบสนอง
ฉันใช้ Apache 2.4.29 บน Ubuntu 18.04