หากคุณเป็นคนที่ทำงานด้าน Technology , Marketing หรือ Data คุณมักจะเจอกับคำถามเกี่ยวกับจังหวะและวิธีการเก็บข้อมูลที่สามารถนำมาใช้วัดผลเว็บไซต์ โดยเฉพาะคนที่ทำงานเกี่ยวกับเว็บไซต์และการเก็บข้อมูล เพื่อนำไปใช้งานด้านการตลาด และการวิเคราะห์หาวิธีการปรับปรุงเพื่อให้ผู้ใช้งานได้รับประสบการณ์ที่ดีมากยิ่งขึ้น
คำถามที่ผมเจอเป็นประจำเลยสำหรับการทำงานเกี่ยวกับ Website Tracking คือ เราสามารถเก็บข้อมูลอะไรได้บ้าง ข้อมูลที่เราเก็บนั้น Marketing สามารถเขียนสคริปต์บน Google Tag Manager ได้ไหม หรือประมาณว่าช่วยคุยกับทีม Software Engineer ให้ที อยากเก็บข้อมูลแบบนั้น เรื่องบางอย่างเราสามารถเข้าใจมันได้ แม้ว่าจะทำมันไม่ได้ก็ตาม อย่างน้อยการเริ่มทำความเข้าใจก็เป็นสิ่งที่ดี เราจะสามารถรู้ลิมิตว่าอะไรทำได้ และอาจจะทำไม่ได้บ้าง ประโยชน์ของการรู้เรื่องพวกนี้คือ ในอนาคตเราจะประเมินงานได้ทันทีที่เห็นการวางแผนเลยทีเดียว ประหยัดเวลาไปได้เยอะ
*ถ้าหากว่าคุณลืม คุณก็แค่กลับมาอ่านหน้าบทความนั้นบ่อย ๆ เหมือนที่คุณกำลังจะเซฟเรื่องนี้ลงในบุ๊กมาร์คของคุณ
Web Storage คือ ส่วนที่ทำให้เว็บเบราเซอร์สามารถเก็บข้อมูลของผู้ใช้งานได้ ในรูปแบบของ Key-value pairs โดยที่เราไม่จำเป็นจะต้องเก็บข้อมูลทุกอย่างลงบนฐานข้อมูลจริง ๆ และเราสามารถกำหนดได้ว่าจะให้ข้อมูลที่อยู่ใน Web Storage เปลี่ยนแปลงไปตามเงื่อนไข หรือหมดอายุ ได้ด้วยการเขียนโค้ดง่าย ๆ เพียงไม่กี่บรรทัด
ข้อมูลที่เราสามารถเก็บได้บน Web Storage สามารถเขียนให้ไปเก็บได้ทั้งหมด 3 ที่ ซึ่งมีความสามารถในการจัดเก็บข้อมูลต่างกัน
Cookie : สามารถเก็บข้อมูลการเข้าใช้งาน และกำหนดอายุของข้อมูลได้
Session Storage : สามารถเก็บข้อมูลเฉพาะช่วงเวลานึงที่มีการเปิดเบราเซอร์ จะถูกลบเมื่อปิดหน้าต่าง
Local Storage : ขนาดใหญ่ได้ ไม่เกิน 5 MB ไม่มีวันหมดอายุ และจะหายไปก็ต่อเมื่อถูกลบเท่านั้น
วิธีการดูข้อมูลเบื้องต้น ให้เปิด Browser แล้วคลิกขวาที่พื้นที่เปล่าในหน้าเว็บไซต์ แล้วเลือกคำสั่ง Inspect จากนั้นให้กดไปที่ Tab Application จากนั้นเราจะพบกับ Storage ทั้ง 3 แบบที่เราจะมาเรียนกันวันนี้
Cookie คือ ข้อมูลขนาดเล็กที่เราสามารถกำหนดเงื่อนไขของการหมดอายุได้ โดยจะมีขนาดไม่เกิน 4 KB ต่อ Cookie ปัจจุบันในประเทศไทยได้มีการออกกฎหมาย PDPA ซึ่งมีผลต่อการเก็บคุกกี้ของเว็บไซต์ คล้ายๆกับนโยบาย GDPR ที่ทางยุโรปบังคับใช้มาแล้ว เพื่อคุ้มครองการเข้าถึงข้อมูลส่วนบุคคลและความเป็นส่วนตัวของผู้ใช้งาน
ทางนักพัฒนาจึงจำเป็นจะต้องทำ Cookie Consent Box เพื่อขอความยินยอมในการใช้ข้อมูลของผู้เข้าชมเว็บไซต์ โดยจะมีต้องมีการบอกวัตถุประสงค์การใช้งาน และมีตัวเลือกให้ผู้ใช้งานเลือกที่จะยอมรับ หรือไม่ยอมรับก็ได้
ปกติแล้ว Cookies มีอยู่ 2 ประเภทหลัก ๆ ดังนี้
1.Session Cookies : เปรียบเสมือนหน่วยความจำชั่วคราวของเว็บไซต์ ส่วนมากจะใช้ในกรณีระบุสถานะของผู้ใช้งานเมื่อมีการล็อกอิน หรือมีการเปลี่ยนแปลงค่าต่าง ๆ ที่นักพัฒนากำหนดไว้ โดยจะไม่ถูกบันทึกข้อมูลส่วนตัว ข้อมูลชุดนี้จะหายไปเมื่อเราปิดเบราเซอร์
2.Persistent Cookies : การเก็บข้อมูลไว้ในอุปกรณ์ผู้ใช้งานระหว่างเซสชัน และได้รับการออกแบบมาเพื่อจดจำการตั้งค่าของผู้ใช้งานในช่วงเวลาที่กำหนดไว้ ส่วนมากจะใช้เพื่อจดจำการตั้งค่าพื้นฐานของผู้ใช้งานเมื่อมีการใช้งานเว็บไซต์ ข้อมูลชุดนี้จะหายไปก็ต่อเมื่อถูกลบ หรือถึงระยะเวลาที่่กำหนดไว้
นอกจากนี้ เรายังสามารถแบ่งคุกกี้ตามประเภทการใช้งานได้อีกหลายรูปแบบ ดังต่อไปนี้
1.First-Party Cookies : คุกกี้ที่ใช้สำหรับการติดตามพฤติกรรมของผู้ใช้งานเมื่อมีการใช้งานเว็บไซต์ และช่วยระบุตัวตนให้กับ Analytics Tools สำหรับเจ้าของเว็บไซต์อย่าง Google Analytics 4 กรณีที่ผู้ใช้งานกลับเข้ามาที่เว็บไซต์อีกครั้ง เจ้าของเว็บจะรู้ว่าคุณเป็นคนเดิมที่เข้ามาเมื่อครั้งที่แล้ว และมีการใช้งานเว็บไซต์อย่างไรบ้าง
2.Third-Party Cookies : คุกกี้ที่อนุญาตให้บุคคลที่สาม สามารถเข้าถึงและแสดงโฆษณาต่อผู้เข้าชมเว็บไซต์ได้ โดยที่คุกกี้ประเภทนี้จะติดตามพฤติกรรมของเราในทุกๆ รูปแบบ เพื่อนำไปใช้ประโยชน์ทางการตลาด และเรามักจะเรียกคุกกี้ประเภทนี้ว่า Marketing Cookies สามารถยกตัวอย่างคุกกี้ประเภทนี้ เช่น Facebook Pixel , Tiktok Pixel , Google Tag เป็นต้น
3.Secure Cookies : คุกกี้ที่สามารถส่งผ่านการเชื่อมต่อแบบเข้ารหัสไว้แล้วเท่านั้น ซึ่งคุกกี้ตัวนี้จะช่วยปกป้องข้อมูลไม่ให้ถูกดักระหว่างทางได้ ใช้สำหรับข้อมูลที่ต้องการความปลอดภัยสูง
4.HTTP-Only Cookies : คุกกี้ประเภทนี้จะไม่สามารถเข้าถึงได้ด้วย Client-Side API เช่น Javascript และด้วยเหตุผลนี้ทำให้ Cookies นี้มีความปลอดภัยจากการโจมตีด้วย Cross-site Scripting (การฝังโค้ดที่มีอันตรายต่อเว็บไซต์โดยตรง) แต่ก็ยังสามารถถูกโจมตีด้วยเทคนิคอื่น ๆ ได้อย่างเช่น Cross-site tracing (XST) และ Cross-site request forgery (CSRF) ได้
5.Same-Site Cookies : คุกกี้ประเภทนี้ถูกพัฒนาขึ้นในมาปี 2016 เพื่อควบคุมการรับส่งค่าคุกกี้ระหว่างเว็บไซต์ โดยสามารถกำหนด Domain ที่เรียกใช้ Cookie และการเลือกกำหนดสิทธิ์ให้กับ Third-Party Cookie ที่ต้องการได้ โดยจะเพิ่มความสามารถในการป้องกัน Cross-site request forgery (CSRF) ปัจจุบันเว็บเบราเซอร์ยอดนิยม เช่น Google Chrome , Mozilla Firefox และ Microsoft Edge ก็ได้รองรับการทำงานของ Same-site Cookie อย่างสมบูรณ์แล้ว
คำสั่งในการเขียนคุกกี้ จะมีคำสั่งเพียงการใช้งานเฉพาะคำสั่ง document.cookie เท่านั้น แต่จะใช้วิธีการส่งค่าอื่น ๆ ที่กำหนดไปตาม Argument นอกจากนี้เรายังสามารถเขียนคำสั่งเพื่อสร้างวิธีในการดึงค่า Cookie ออกมาใช้งานได้ผ่านคำสั่ง Javascript ตามตัวอย่างด้านล่าง
document.cookie = "username=Soranat; expires=Sat, 29 Mar 2025 00:00:00 UTC; path=/";
//กดดูที่ Cookies จะเห็นว่ามี Name = 'username' และ value เท่ากับ 'Soranat'
function getCookie(cname) {
var name = cname + "=";
var decodedCookie = decodeURIComponent(document.cookie);
var ca = decodedCookie.split(';');
for(var i = 0; i <ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
//function สำหรับการเรียกดู Cookie สามารถใช้ได้โดยการพิมพ์ getCookie("username")
getCookie("username")
//output : "Soranat"
document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";
//สามารถลบ Cookies ได้โดยการตั้งวันหมดอายุย้อนหลัง
**ไม่ควรบันทึกข้อมูลที่เป็นความลับลงเป็นตัวอักษรแบบไม่เข้ารหัส เราสามารถ Hash ข้อมูลประเภท Token เพื่อเก็บไว้ในคุกกี้สำหรับเรื่องที่จำเป็นเท่านั้น
ข้อดี
- คุกกี้จะมีความสามารถในการจดจำพฤติกรรมของผู้ใช้งานได้ ทำให้เราไม่ต้องปรับตั้งค่าการเล่นเว็บไซต์ใหม่
- เมื่อมีการสร้าง Token สำหรับการเข้าสู่ระบบแล้ว เมื่อปิดเบราเซอร์ไป พอกลับเข้ามาอีกครั้งจะสามารถใช้งานได้
- คุกกี้ทำให้นักการตลาดสามารถหา Insight จากข้อมูล Web Analytics เพื่อวางแผนโฆษณาได้ดียิ่งขึ้น
ข้อเสีย
- คุกกี้บางตัวมีไว้เพื่อสอดส่องพฤติกรรมของเรา ทำให้เราโดนยิงโฆษณาง่ายขึ้นกว่าเมื่อก่อน
- คุกกี้บางประเภทเรียกว่าคุกกี้ซอมบี้ ที่จะสร้างตัวเองไม่หยุดต่อให้เราลบก็จะสามารถสร้างใหม่ได้เรื่อย
- คุกกี้บางต่ออาจเป็นอันตรายต่อการใช้งานบัญชีต่าง ๆ ของผู้ใช้งานอาจจะมีไวรัส หรือสคริปต์ไม่พึงประสงค์ที่ถูกสร้างขึ้้นเพื่อโจมตีทั้งผู้ใช้งานและเจ้าของเว็บไซต์ได้
Session Storage คือการเก็บข้อมูลใน Storage แบบ ชั่วคราว ในรูปแบบของ Key-value Pair จะหายไปเมื่อเราทำการปิดเบราเซอร์หรือระยะเวลาหมดอายุ มีขนาดไม่เกิน 5-10 MB โดยที่ข้อมูลเหล่านี้จะไม่ถูกส่งไปยัง Server สามารถนำข้อมูลมาแสดงได้ด้วย Client API อย่าง Javascript คำสั่งของ sessionStorage มีทั้งหมด 4 คำสั่ง
1. sessionStorage.setItem( key , value ) : ใช้สำหรับการบันทึกค่าลงใน Storage โดยระบุคีย์ และค่าที่ต้องการจะเก็บ
2. sessionStorage.getItem( key ) : ใช้สำหรับการนำข้อมูลออกมาแสดงผล โดยระบุคีย์
3. sessionStorage.removeItem( key ) : ใช้สำหรับการลบข้อมูลด้วยการระบุคีย์
4. sessionStorage.clear() : ใช้สำหรับการล้างข้อมูลใน sessionStorage ทั้งหมด
ตัวอย่างของการเก็บข้อมูลใน sessionStorage เช่น เราต้องการจำเก็บข้อมูล UTM Parameter ไว้ใช้สำหรับบันทึกข้อมูล Lead ลง Database เราสามารถเขียนโค้ดเพื่อดึงค่า UTM Parameter ที่ปรากฏในหน้าแรกเมื่อลูกค้าเข้ามาที่เว็บไซต์ แล้วเก็บไว้ เมื่อผู้ใช้งานเล่นเว็บไซต์ไปเรื่อยๆ และถึงจังหวะที่ต้องลงทะเบียน เราสามารถนำข้อมูลเหล่านี้ส่งไปพร้อมกับ form data ได้
sessionStorage.setItem( "utm_source" , "google" )
//output : สร้างตัวแปร utm_source ที่มีค่า "google" ใน Session Storage
sessionStorage.setItem( "utm_medium" , "cpc" )
//output : สร้างตัวแปร utm_medium ที่มีค่า "cpc" ใน Session Storage
sessionStorage.setItem( "utm_campaign" , "sem" )
//output : สร้างตัวแปร utm_campaign ที่มีค่า "sem" ใน Session Storage
sessionStorage.getItem( "campaign" )
//output : "sem"
sessionStorage.removeItem( "campaign" )
//output : ลบค่าของตัวแปร campaign ซึ่งก็คือ sem ในบรรทัดที่แล้ว
sessionStorage.clear()
//output : ลบค่าทั้งหมดใน sessionStorage
**ไม่ควรบันทึกข้อมูลที่เป็นความลับลงเป็นตัวอักษรแบบไม่เข้ารหัส เราสามารถ Hash ข้อมูลประเภท Token เพื่อเก็บไว้ในคุกกี้สำหรับเรื่องที่จำเป็นเท่านั้น
ข้อดี
- สามารถกำหนดระยะเวลาหมดอายุของข้อมูลได้
- เป็นที่นิยมเพราะใช้งานง่ายกว่า Cookie
- ลดการส่งข้อมูลไป-กลับระหว่าง Client กับ Server
- มีขนาดสูงสุด 10 MB (แล้วแต่ Browser)
ข้อเสีย
- ข้อมูลจะหายไปตอนที่ผู้ใช้งานปิดเบราเซอร์
- สามารถบันทึกได้เพียงตัวอักษรเท่านั้น
- ไม่ปลอดภัยสำหรับการเก็บชื่อ รหัสผู้ใช้งาน รวมถึงข้อมูลที่เป็นความลับ
Local Storage คือ การเก็บข้อมูลใน Storage แบบถาวร ในรูปแบบของ Key-value Pair ไม่มีวันหมดอายุ ยกเว้นแต่จะถูกลบโดยผู้ใช้งาน ข้อมูลเหล่านี้จะไม่ถูกส่งไปยัง Server สามารถนำข้อมูลมาแสดงได้ด้วย Client API อย่าง Javascript มีขนาดไม่เกิน 5-10 MB และใช้คำสั่งเช่นเดียวกันกับ Session Storage แค่เปลี่ยนจาก sessionStorage เป็น localStorage เท่านั้น
1. localStorage.setItem( key , value ) : ใช้สำหรับการบันทึกค่าลงใน Storage โดยระบุคีย์ และค่าที่ต้องการจะเก็บ
2. localStorage.getItem( key ) : ใช้สำหรับการนำข้อมูลออกมาแสดงผล โดยระบุคีย์
3. localStorage.removeItem( key ) : ใช้สำหรับการลบข้อมูลด้วยการระบุคีย์
4. localStorage.clear() : ใช้สำหรับการล้างข้อมูลใน sessionStorage ทั้งหมด
ตัวอย่างของการเก็บข้อมูลใน localStorage เช่น เราต้องการกำหนดรหัสผู้ใช้งานโดยแบ่งตามอุปกรณ์ที่เข้าใช้งาน เป็นหนึ่งวิธีที่ Customer Data Platform หลายๆเจ้าใช้ในการช่วยระบุตัวตน (ID Resolution) เมื่อมีการบันทึกข้อมูลบางอย่างลง localStorage แล้ว ข้อมูลชุดนั้นจะอยู่กับอุปกรณ์ดังกล่าวตลอดไป จนกว่าจะมีการลบข้อมูลออก
sessionStorage.setItem( "device_idx" , "BVdis4781sWtCsas" )
//output : สร้างตัวแปร device_idx ที่มีค่า "BVdis4781sWtCsas" ใน Local Storage
sessionStorage.getItem( "device_idx" )
//output : "BVdis4781sWtCsas"
sessionStorage.removeItem( "device_idx" )
//output : ลบค่าของตัวแปร device_idx ซึ่งก็คือ BVdis4781sWtCsas ในบรรทัดที่แล้ว
sessionStorage.clear()
//output : ลบค่าทั้งหมดใน Local Storage
ข้อดี
- ข้อมูลไม่มีวันหมดอายุ จนกว่าจะถูกลบ หรือเคลียร์ความจำคอมพิวเตอร์
- มีขนาดสูงสุด 10 MB (แล้วแต่ Browser)
- ข้อมูลจะไม่ถูกส่งไปยัง Server
ข้อเสีย
- ข้อมูลที่เก็บไว้ไม่ปลอดภัย
- ถูกอ่านได้ผ่าน Client side เท่านั้น ไม่สามารถอ่านด้วย Server side ได้
เราสามารถเก็บข้อมูลผู้ใช้งานในฝั่ง Browser (Client Side) ได้ทั้งหมด 3 วิธี ด้วยการใช้ Cookie , sessionStorage และ localStorage
Cookie เอาไว้สำหรับเก็บข้อมูลที่เราต้องนำไปใช้ในการทำงานทั้งฝั่ง Software Engineer , Analytics และ งานสาย Marketing อย่างการทำ Remarketing Tag
Session Storage เหมาะสำหรับการเก็บค่าเฉพาะในเซสชั่นที่ผู้ใช้งานกำลังเข้าเว็บไซต์อยู่ หรือการเก็บค่าระหว่างหน้าเพจในเว็บไซต์เราส่งไปให้หน้าอื่นแบบง่าย ๆ
Local Storage เหมาะสำหรับข้อมูลที่เราต้องการฝังไว้ในอุปกรณ์เครื่องนั้นแบบถาวร ไม่หายไปแม้ว่าเบราเซอร์จะถูกปิดไปแล้วก็ตาม
อย่างไรก็ตามเราไม่ควรจะเก็บข้อมูลส่วนบุคคล หรือข้อมูลที่เป็นความลับด้วยทั้ง 3 วิธี แม้ว่าปัจจุบันจะมีการใช้วิธีการเข้ารหัสก็ตาม สุดท้ายแล้วการเลือกใช้ Cookie , sessionStorage หรือ localStorage นั้นขึ้นอยู่กับสถานการณ์ที่เราต้องการกำหนดตามแอพพลิเคชั่นที่พัฒนาไว้ โดยคำนึงถึงเรื่องความปลอดภัยจากการโจมตีของผู้ไม่ประสงค์ดีเป็นหลัก
Share your experience with this Blog