แคชหมดอายุแบบสุ่ม


13

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

ฉันพยายามค้นหางานวิจัยหรือคำแนะนำในหัวข้อนี้เช่นพารามิเตอร์ความแปรปรวนที่ดีที่สุด ฉันจำได้ว่าเคยเห็นบทความหนึ่งเกี่ยวกับวิธีที่ Google (?) ใช้เทคนิคนี้ แต่ไม่สามารถค้นหาได้และดูเหมือนจะไม่ได้เขียนเกี่ยวกับหัวข้อมากนัก


คุณสามารถใส่ข้อความนี้เป็นคำถามได้หรือไม่? ยังไม่ชัดเจนว่าคุณคาดหวังคำตอบอย่างไร
Derek

ตกลงเสร็จแล้ว
mahemoff

คำตอบ:


4

เอกสารบางส่วน:


3
ขอบคุณสำหรับลิงก์เหล่านี้ แต่ไม่มีใครพูดถึงการสุ่ม
mahemoff

2
ฉันรู้ว่าคำถามนี้มีอายุเท่าไร แต่ Matthew Neale จาก EstarOnline Limited ได้ทำสิ่งนี้ (PDF): estaronline.com/images/assetimages/…
Nick Bedford

@NickBedford นี่คือคำตอบที่ฉันต้องการ ความคิดเห็นของคุณควรเป็นคำตอบที่ยอมรับได้
WhiteHotLoveTiger

0

กลับมาตอบคำถามของฉันเองปัญหาหลักที่นี่คือวิธีหลีกเลี่ยงทุกสิ่งที่หมดอายุในเวลาเดียวกัน หากได้รับอนุญาตให้เกิดขึ้นระบบจะช้าลงและแออัดในขณะที่เติมแคชอีกครั้ง

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

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

เท่านี้เป็นปัญหามีวิธีแก้ไข:

  • เพียงเลือกระยะเวลาการแคชแบบสุ่มภายในช่วงแทนช่วงเวลาที่แน่นอนเช่นจำนวนเต็มแบบสุ่มระหว่าง 15 ถึง 90 นาทีแทนที่จะเป็น 60 นาที
  • อนุญาตการตอบกลับที่ค้าง เพียงเพราะรายการแคชหมดอายุไม่ได้หมายความว่าคุณจะไม่สามารถใช้งานได้หากยังมีอยู่ ขึ้นอยู่กับความต้องการทางธุรกิจอาจเป็นที่ยอมรับได้หากมีปัญหาด้านประสิทธิภาพในการดึงข้อมูลเวอร์ชันดั้งเดิมหลังจากหมดอายุ ใน HTTP นี่คือจุดประสงค์ของ "ต้องตรวจสอบความถูกต้อง" (หากเป็นจริงหมายความว่า จะไม่ใช้เวอร์ชันแคชหลังจากหมดอายุ)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.