คุณกำลังสมมติว่าที่เก็บข้อมูลของเซสชันและที่จัดเก็บฐานข้อมูลนั้นเป็นเอกสิทธิ์ พวกเขาไม่ได้ แต่เรามาเริ่มโดยสมมติว่าพวกมันเป็น
ข้อดีของการจัดเก็บเซสชันคือสามเท่า:
- ไม่จำเป็นต้องแทรกข้อมูลลงในฐานข้อมูลอย่างชัดเจน คุณเพียงแค่ตั้งค่าตัวแปรเซสชันและทำเสร็จแล้ว ใช้งานง่ายและมีความเสี่ยงต่ำ
- ไม่จำเป็นต้องจัดการวงจรชีวิตของการเยี่ยมชมของผู้ใช้และตะกร้าช้อปปิ้งเนื่องจากภาชนะ / กรอบทำเพื่อคุณ
- โดยปกติแล้วการล้างข้อมูลในเซสชันว่างเก่าโดยอัตโนมัติจะทำเพื่อคุณ
ข้อเสียของการจัดเก็บข้อมูลเซสชั่น:
- ความสัมพันธ์ของเซสชันยกเว้นว่าคุณตรวจสอบการจำลองแบบ
- ไม่มีการล้มเหลวเว้นแต่คุณจะตรวจสอบการจำลองแบบหรือการคงอยู่ด้วยตนเองของสถานะเซสชันไปยังดิสก์ซึ่งอาจซับซ้อน
- เซสชันทั้งหมดจะต้องเก็บไว้ในหน่วยความจำ นี่คือขยายถ้าคุณใช้การจำลองแบบ
ข้อดีของการจัดเก็บฐานข้อมูล:
- ไม่จำเป็นต้องกังวลเกี่ยวกับการเชื่อมโยงเซสชันหรือการจำลองสถานะ คุณสามารถปัดเศษคำขอทั้งหมด
- ค่าใช้จ่ายหน่วยความจำน้อยลงในแอปพลิเคชัน
- หากการสั่งซื้อเสร็จสมบูรณ์ทุกอย่างจะสิ้นสุดลงในฐานข้อมูลอยู่แล้วดังนั้นการดำเนินการนี้อาจทำให้เสร็จได้ง่ายเนื่องจากมีข้อมูลอยู่แล้ว
ข้อเสียของการจัดเก็บฐานข้อมูล:
- รถเข็นที่ถูกทิ้งร้าง - ผู้ใช้ที่ไม่ระบุชื่อบางคนเพิ่มรายการลงในตะกร้าสินค้าของพวกเขาและหายไป ข้อมูลนั้นจะวนอยู่ตลอดไปจนกว่าคุณจะมีกระบวนการหมดอายุ
- คุณจำเป็นต้องหาวิธีในการติดตามผู้ใช้และทราบว่าหากมีการร้องขอสิ่งนี้จะแสดงถึงเซสชันการเรียกดูที่มีอยู่หรือใหม่ (ใช่นี่เป็นเรื่องง่ายถ้าคุณใช้คุกกี้ แต่คุณจะมั่นใจได้อย่างไรว่าผู้ใช้สองคนไม่ได้ใช้ id เดียวกัน?)
- รหัสเพิ่มเติม
คุณไม่ได้พูดถึงแพลตฟอร์มที่คุณใช้ ฉันจะหาวิธีที่ใช้เซสชันที่มีการสำรองฐานข้อมูลซึ่งมีข้อมูลเซสชันอยู่ในหน่วยความจำเท่านั้นในช่วงอายุของรอบคำขอ / ตอบกลับโหลดจากฐานข้อมูลและบันทึกกลับไปยังฐานข้อมูล สิ่งนี้ทำให้ฉันดีในอดีต
ข้อดีของเซสชันที่มีการสำรองฐานข้อมูล:
- ไม่จำเป็นสำหรับเซิร์ฟเวอร์ที่เกี่ยวข้อง
- ง่ายในหน่วยความจำเซิร์ฟเวอร์แอป
- ข้อมูลเซสชั่นว่าง / ไม่ใช้นั้นถูกล้างข้อมูลสำหรับคุณ
- วงจรชีวิตของผู้ใช้ครั้งแรกเยี่ยมชมซ้ำปลายเซสชั่นทั้งหมดที่คิดสำหรับคุณ
- รหัสง่าย
ข้อเสียของเซสชันที่มีการสำรองฐานข้อมูล:
- การกำหนดค่า - คุณต้องตรวจสอบคอนเทนเนอร์ของคุณไม่ว่าจะเป็น PHP, Java EE (Tomcat, Jetty, JBoss, ฯลฯ ), node.js + express.js หรืออะไรก็ตามที่ไม่สนับสนุนสิ่งนี้และให้การกำหนดค่าที่เหมาะสม
- คุณอาจต้องโหลดการทดสอบนี้เนื่องจากคุณเพิ่มการดำเนินการฐานข้อมูล 2 รายการต่อคำขอ
มีความเป็นไปได้ที่สามซึ่งบางคนเคยสัมผัสมาก่อนหน้านี้ คุณสามารถข้ามการใช้งานเซสชันทั้งหมดและใช้ที่เก็บข้อมูลฝั่งไคลเอ็นต์โดยฝังทุกอย่างในคุกกี้หรือที่จัดเก็บในตัวเครื่อง html
ฉันจะทิ้งข้อดีข้อเสียของมันไว้เป็นแบบฝึกหัดให้คุณ แต่ฉันจะให้คำแนะนำว่าสำหรับการจัดเก็บ html5 ความเข้ากันได้ของเบราว์เซอร์อาจเป็นสิ่งที่ต้องพิจารณาอย่างรอบคอบ
ฉันได้อธิบายข้อเท็จจริงสำหรับคุณแล้ว หวังว่านี่จะช่วยให้คุณตัดสินใจได้อย่างถูกต้องกับสถานการณ์