โปรโตคอล HTTP นั้นไร้สัญชาติ เซสชั่นเป็นวิธีการรักษาสถานะของลูกค้าในการร้องขอ HTTP คุณอาจเลือกที่จะทำเช่นนั้นด้วยการจัดการเซสชันภายในแพลตฟอร์มหรือทำด้วยตัวเองด้วยพารามิเตอร์สตริงแบบสอบถาม ไม่ว่าแนวคิดของเซสชั่นบางอย่างเป็นสิ่งจำเป็นสำหรับงานจำนวนมาก
เพื่อนร่วมงานของคุณอาจไม่ชอบการใช้งานที่เฉพาะเจาะจงหรือไม่ได้ใช้เซสชันตามวัตถุประสงค์ที่ตั้งใจไว้ หากคุณต้องการเก็บข้อมูลเกี่ยวกับการเชื่อมต่อไคลเอนต์เฉพาะข้ามคำขอ HTTP คุณต้องมีรูปแบบการคงอยู่ของเซสชัน
ปัญหาต่อไปนี้เป็นการใช้งานเฉพาะ:
ลักษณะที่ไม่ได้พิมพ์ของตัวแปรเซสชัน
ลักษณะขอบเขตส่วนกลางของตัวแปรเซสชัน
โหลดเซิร์ฟเวอร์ที่ทำสมดุลการสูญเสียเซสชัน
แอพลิเคชันพูล / เซิร์ฟเวอร์เริ่มต้นใหม่
ตัวอย่างเช่นฉันมักทำงานใน PHP และเก็บข้อมูลเซสชันของฉันในฐานข้อมูลเชิงสัมพันธ์ ดังนั้นตัวแปรเซสชั่นของฉันถูกพิมพ์ โหลดบาลานซ์และรีสตาร์ทเซิร์ฟเวอร์ไม่ทำให้เกิดปัญหาเซสชัน
อันนี้น่าสนใจกว่า:
การหมดเวลาของเซสชันทำให้สูญเสียสถานะ
เซสชันมักถูกเก็บรักษาไว้ผ่านคุกกี้ ลูกค้าสามารถลบทิ้งได้ตลอดเวลา แต่พวกเขายังสามารถเก็บรักษาไว้ผ่านพารามิเตอร์สตริงแบบสอบถามและดังนั้นจึงไม่เคยหมดเวลากับลูกค้า การหมดเวลาของเซิร์ฟเวอร์ขึ้นอยู่กับคุณ ดังนั้นแม้ปัญหานี้เป็นการใช้งานเฉพาะ
อย่าทิ้งแนวคิดทั้งหมดของเซสชันเพียงเพราะเราไม่ชอบการนำไปใช้งานเฉพาะ กรอบงานเว็บแอพพลิเคชั่นที่ดีจะช่วยให้การใช้งานเป็นไปอย่างถูกต้องเพื่อรักษาการเข้าสู่ระบบของผู้ใช้หรือเก็บสิ่งอื่น ๆ บันทึกฐานข้อมูลของผู้ใช้สามารถ (และควร) ใช้เพื่อจัดเก็บสิ่งต่าง ๆ ที่เฉพาะเจาะจงเมื่อเข้าสู่ระบบอย่างไรก็ตามผู้เยี่ยมชมที่ไม่ระบุชื่ออาจมีข้อมูลชั่วคราวที่ควรเก็บไว้ในเซสชันเช่นรายการสั้น ๆ ของหน้าเว็บล่าสุดที่เข้าชม ซ่อนประกาศที่พวกเขาได้เห็นแล้ว โดยทั่วไปแล้วข้อมูลชั่วคราวขนาดเล็กเท่านั้นที่เหมาะสมสำหรับการจัดเก็บข้อมูลเซสชัน
using things like query string parameters instead
- ในกรณีนี้ให้ใช้พารามิเตอร์สตริงแบบสอบถามเสมอหากเป็นไปได้ การใช้เซสชันสำหรับพารามิเตอร์ประเภทนั้นมีความเปราะบางและสามารถแนะนำบั๊กแปลก ๆ เมื่อผู้ใช้เปิดหลายแท็บ