ฉันกำลังทำงานในโครงการกับองค์กรดังต่อไปนี้:
- ไคลเอ็นต์ - รับข้อมูลจากเซิร์ฟเวอร์หลักผ่าน REST api
- เซิร์ฟเวอร์ - ร้องขอข้อมูลจากเซิร์ฟเวอร์อื่น ๆ ผ่าน API ของบุคคลที่สาม
- API ของบุคคลที่สาม - บริการอยู่นอกเหนือการควบคุมของฉันที่ให้ข้อมูลกับเซิร์ฟเวอร์ (Reddit, Hackernews, Quora ฯลฯ )
เพื่อประโยชน์ในการโต้แย้งสมมติว่าลูกค้าต้องการรายการจาก API บุคคลที่สามแต่ละรายการก่อน จากรายการนี้รายการจะถูกเลือก ณ จุดที่ลูกค้าต้องการดูเนื้อหาทั้งหมดของรายการรวมถึงการตอบกลับ (เช่นความคิดเห็น) ไปยังรายการ ฉันพยายามตัดสินใจระหว่างสามตัวเลือก:
อาหารตามสั่ง
ในวิธีการนี้ฉันจะมีจุดสิ้นสุด 3 จุดแยกกันบนเซิร์ฟเวอร์ของฉัน: รายการหนึ่งเพื่อรับรายการรายการหนึ่งรายการเพื่อรับเนื้อหาหลักสำหรับรายการและอีกรายการหนึ่งเพื่อรับการตอบกลับของรายการ
- ข้อดี: ฉันไม่เคยขอมากกว่าที่ต้องการการร้องขอควรมีขนาดเล็กดังนั้นโดยทั่วไปพวกเขาควรจะเร็วกว่า
- ข้อด้อย: ฉันต้องขอจำนวนมาก หลังจากเลือกรายการจากรายการผู้ใช้อาจต้องรอก่อนเห็นเนื้อหาหลักจากนั้นรออีกนานเพื่อดูการตอบกลับ
แคชฝั่งเซิร์ฟเวอร์
ในคำขอนี้ฉันจะโทรหาเซิร์ฟเวอร์ของฉันเพื่อ "ดึง" ข้อมูลทั้งหมดสำหรับแหล่งที่มาทั้งหมด ข้อมูลจะถูกแคชบนเซิร์ฟเวอร์ จากนั้นไคลเอ็นต์จะมีจุดสิ้นสุด REST แบบเดิมเหมือนกันยกเว้นจะไม่มีการรอระหว่างการโทรเนื่องจากเซิร์ฟเวอร์ของฉันมีข้อมูลอยู่แล้วและจะต้องป้อนให้กับลูกค้า
- ข้อดี: ยังใช้งานง่ายในฝั่งไคลเอ็นต์ แต่ไม่มีปัญหาเวลาในการตอบสนอง
- ข้อด้อย: ฝั่งเซิร์ฟเวอร์มีส่วนเกี่ยวข้องมากกว่าเล็กน้อยและการโทรครั้งแรกอาจใช้เวลานานมาก
แคชฝั่งไคลเอ็นต์
สถานการณ์นี้คล้ายกับก่อนหน้านี้ยกเว้นลูกค้าเคยขอหนึ่งครั้งไปยังเซิร์ฟเวอร์: ให้ข้อมูลทั้งหมดแก่ฉัน จากที่นี่เป็นความรับผิดชอบของลูกค้าในการบันทึกข้อมูลและใช้งานอย่างเหมาะสม
- ข้อดี: การติดตั้งเซิร์ฟเวอร์ที่ง่ายดายรวดเร็วมากหลังจากการโทรครั้งแรก
- ข้อด้อย: การโทรครั้งแรกจะช้ามากการใช้งานฝั่งไคลเอ็นต์ที่ซับซ้อนมากขึ้น
ฉันไม่แน่ใจว่าวิธีใดดีที่สุดหรือบางทีฉันอาจขาดวิธีแก้ปัญหาที่ชัดเจน คำแนะนำใด ๆ ที่จะได้รับการชื่นชมอย่างมาก!