MiddleWeb

Bạn thiết kế việc đếm lượt xem bài viết thế nào để tôn trọng quyền riêng tư và không bị robot làm sai số?

Người phỏng vấn muốn xem bạn có xuất phát từ câu hỏi cần trả lời hay không, thay vì ghi mọi thứ có thể ghi, và có biết các cách dữ liệu đếm bị sai trong thực tế không.

Một câu trả lời tốt bắt đầu bằng việc xác định mình cần biết gì. Nếu chỉ cần biết bài nào được đọc nhiều thì một con số cho mỗi bài mỗi ngày là đủ, không cần IP, trình duyệt hay lịch sử của từng người. Cách ghi nhật ký từng lượt truy cập vừa phải bảo vệ dữ liệu cá nhân vừa cho con số sai, vì tải lại trang, robot và lượt lướt qua đều thành một dòng.

Về thiết kế, bảng chỉ có khóa (bài, ngày) và một cột đếm, tăng bằng một câu lệnh upsert nguyên tử để hai người đọc cùng lúc không làm mất lượt. Trình duyệt chờ vài giây trước khi báo, mỗi tab chỉ báo một lần cho mỗi bài, và bỏ qua trình duyệt tự động. Máy chủ kiểm tra lại: chỉ nhận slug đúng dạng và là bài đã đăng, vì hàm có thể bị gọi thẳng mà không qua giao diện. Bản xem thử không được đếm, nhất là khi dùng chung cơ sở dữ liệu với bản thật.

Điểm cộng là nói được giới hạn: không đếm được người đọc duy nhất, một người mở hai tab bị đếm hai lần, và không biết nguồn truy cập. Biết mình chọn không đo gì, và vì sao, là dấu hiệu của người đã suy nghĩ chứ không chỉ làm theo hướng dẫn.