วิธีแก้ไขข้อผิดพลาดขนาดคุกกี้เกินโดยการแยกคุกกี้
วิธีแก้ข้อผิดพลาดขนาดคุกกี้เกิน: แยกคุกกี้ออกเป็นคุกกี้ย่อย ๆ หลาย ๆ ชิ้นและสร้างใหม่ที่ฝั่งเซิร์ฟเวอร์ วิธีนี้ทำงานได้ดีเป็นพิเศษสำหรับแพลตฟอร์มเซิร์ฟเวอร์เลส โดยไม่ต้องมีโครงสร้างพื้นฐานเพิ่มเติม
วิธีแก้ข้อผิดพลาดขนาดคุกกี้เกิน: แยกคุกกี้ออกเป็นคุกกี้ย่อย ๆ หลาย ๆ ชิ้นและสร้างใหม่ที่ฝั่งเซิร์ฟเวอร์ วิธีนี้ทำงานได้ดีเป็นพิเศษสำหรับแพลตฟอร์มเซิร์ฟเวอร์เลส โดยไม่ต้องมีโครงสร้างพื้นฐานเพิ่มเติม
ย่อสั้น ๆ: เมื่อขนาดคุกกี้ของคุณเกินขีดจำกัด 4KB ของเบราว์เซอร์ ให้แยกมันออกเป็นคุกกี้ย่อย ๆ หลาย ๆ ชิ้นและสร้างมันใหม่ที่ฝั่งเซิร์ฟเวอร์ วิธีนี้ทำงานได้ดีเป็นพิเศษสำหรับแพลตฟอร์มเซิร์ฟเวอร์เลส โดยไม่ต้องมีโครงสร้างพื้นฐานเพิ่มเติม
ใน Logto SDKs ส่วนใหญ่สำหรับแอปเว็บดั้งเดิม เราเก็บข้อมูลเซสชันในคุกกี้ HTTP-only เพื่อความปลอดภัย นี่คือแนวทางของเรา:
เมื่อ SDK ดำเนินการที่ต้องใช้ข้อมูลเซสชัน มันจะ:
แนวทางนี้ไม่ต้องการเก็บข้อมูลภายนอกและสามารถปรับใช้ได้โดยตรงกับแพลตฟอร์มเซิร์ฟเวอร์เลสยอดนิยม เช่น Vercel โดยไม่มีการเปลี่ยนแปลงโครงสร้างพื้นฐานเพิ่มเติม
อย่างไรก็ตาม เมื่อมีการใช้งานการสนับสนุนหลายองค์กร เราพบข้อจำกัด ขนาดคุกกี้ของเราเพิ่มขึ้นเกินขีดจำกัด 4KB ของเบราว์เซอร์ เนื่องจากเราต้องจัดเก็บ:
สิ่งนี้ส่งผลให้เกิดข้อผิดพลาด:
เบราว์เซอร์บังคับใช้ขีดจำกัดขนาดคุกกี้อย่างเข้มงวด โดยส่วนใหญ่จำกัดคุกกี้แต่ละตัวไว้ที่ 4KB และขนาดคุกกี้ทั้งหมดสูงสุดที่ 8KB ต่อโดเมน
การใช้การจัดเก็บข้อมูลภายนอก เช่น Redis หรือฐานข้อมูล จะต้องมีการตั้งค่าโครงสร้างพื้นฐานเพิ่มเติม เพิ่มทั้งค่าใช้จ่ายและความซับซ้อนสำหรับผู้ใช้ SDK ซึ่งขัดกับเป้าหมายของเราที่จะให้โซลูชันเป็นมิตรกับนักพัฒนา
แม้ว่าการเก็บในหน่วยความจำอาจเป็นทางเลือกได้ แต่ก็ไม่ทำงานได้ดีสำหรับสภาพแวดล้อมเซิร์ฟเวอร์เลส ซึ่ง instances มักเจอและหน่วยความจำไม่ได้แชร์ระหว่างคำขอ
ทางออกง่าย ๆ คือการแยกคุกกี้ที่มีขนาดใหญ่เป็นชิ้นเล็ก ๆ บทความนี้แสดงวิธีการโดยใช้ Next.js เป็นตัวอย่าง:
การแยกคุกกี้เสนอวิธีแก้ปัญหาที่ชาญฉลาด ที่ง่ายต่อการใช้งานและรบกวนโครงสร้างแอปพลิเคชันที่มีอยู่น้อยที่สุด โดยเพียงแค่แบ่งคุกกี้ขนาดใหญ่เป็นชิ้นเล็ก ๆ ผู้พัฒนาสามารถเอาชนะข้อจำกัดขนาดของเบราว์เซอร์ได้โดยไม่เปลี่ยนแปลงวิธีจัดการเซสชันหลักหรือเพิ่มการพึ่งพาภายนอก