Một website đa ngôn ngữ đôi khi cho ra biểu đồ rất kỳ lạ.
“Traffic ngôn ngữ chính đang giảm à?” “Sao tiếng Anh, tiếng Trung và các ngôn ngữ khác lại tăng?” “Khoan… lượt xem của mình có đang bị tính vào ngôn ngữ chính không?”
Cả ba đều có thể đúng cùng lúc.
Traffic ngoại ngữ có thể thực sự tăng. External landing của ngôn ngữ chính có thể yếu đi. Đồng thời, người vận hành website liên tục mở bài mới, kiểm tra link, quay về trang chủ, refresh sau khi sửa và vô tình trở thành một “độc giả trung thành” của ngôn ngữ chính.
Độc giả đó thường chính là người vận hành.
Bài này giải thích cách loại browser của chính bạn khỏi analytics, khi nào dùng localStorage hay Cookie, vì sao mở trang không có nghĩa là đã “đăng ký owner”, dữ liệu lịch sử sẽ ra sao và nên đọc tăng trưởng đa ngôn ngữ như thế nào.
1. Đừng nhìn tổng pageview trước; hãy tách external landing và điều hướng nội bộ
Tổng pageview rất dễ bị thổi phồng khi người vận hành thường xuyên kiểm tra phiên bản ngôn ngữ chính.
Các hành vi hay bị tính chung:
- mở trực tiếp bài vừa xuất bản
- đi từ trang chủ vào bài
- bấm bài liên quan
- kiểm tra trên cả máy tính và điện thoại
- refresh nhiều lần sau deploy
- quay lại sau đó để kiểm tra production
Người đọc bình thường có thể xem một trang rồi rời đi. Người vận hành vừa là biên tập viên, QA, độc giả, vừa là hệ thống giám sát.
Vì vậy, website đa ngôn ngữ nên tách ít nhất:
- external landing views
- internal referred views
Nếu trang ngoại ngữ tăng external landing còn ngôn ngữ chính có nhiều internal navigation, một phần “ưu thế” của ngôn ngữ chính có thể chỉ là người vận hành thường xuyên đi lại trong giao diện đó.
2. “Tôi đã mở rồi. Đã được đăng ký chưa?” — chưa, nếu không có code ghi trạng thái
Bạn quyết định browser này phải được xem là owner rồi mở website một lần.
Nó có tự đăng ký không?
Không.
Browser không tự suy luận:
“Người này có vẻ là chủ website, từ giờ không tính nữa.”
Cần có thao tác thực sự ghi trạng thái, chẳng hạn:
- owner flag trong localStorage
- owner flag trong Cookie
- thiết lập gắn với phiên admin đã đăng nhập
- nhãn internal traffic ở server
Mở trang là một lượt truy cập. Đăng ký owner là thay đổi state.
Không có code ghi state thì không có gì được đăng ký.
3. localStorage hay Cookie?
Hai cách phổ biến là localStorage và Cookie.
localStorage
localStorage lưu dữ liệu theo origin và thường tồn tại qua nhiều phiên browser thông thường.
Ví dụ:
localStorage.setItem("analytics_owner", "1");
Analytics phía client có thể kiểm tra trước khi gửi event:
if (localStorage.getItem("analytics_owner") === "1") {
return;
}
Ưu điểm là đơn giản.
Nhược điểm là server hoặc Edge Worker không nhìn thấy localStorage khi HTTP request đầu tiên tới.
Cookie
Cookie có thể được gửi cùng HTTP request phù hợp.
Ví dụ:
document.cookie =
"analytics_owner=1; Path=/; Max-Age=31536000; SameSite=Lax; Secure";
Server hoặc Edge Worker có thể kiểm tra Cookie trước khi tăng bộ đếm.
Cách sạch hơn là thiết lập Cookie từ trang admin đã xác thực hoặc route riêng. Nếu JavaScript không cần đọc Cookie thì có thể cân nhắc HttpOnly.
Tuy nhiên, flag này chỉ dùng để loại khỏi analytics.
Không được dùng Cookie hoặc localStorage mà người dùng có thể tự ghi làm xác thực hoặc phân quyền. Nếu làm vậy thì chỉ cần tự viết “giám đốc” lên thẻ tên là có thể vào phòng giám đốc.
4. Đếm ở server/Edge thì dùng Cookie; chỉ gửi event từ browser thì localStorage đủ
Tiêu chí chính là nơi việc đo lường diễn ra.
JavaScript trong browser gửi event
localStorage thường đủ.
Kiểm tra owner trước khi gửi.
CDN, Edge Worker, server hoặc access log tăng pageview
Cookie phù hợp hơn.
Server nhận request trước khi JavaScript phía browser chạy.
localStorage chỉ ở trong browser. Cookie đi cùng request.
Cùng mục tiêu nhưng điểm đo khác nhau.
5. Website nhỏ chỉ cần một lần thiết lập đơn giản
Doanh nghiệp lớn có thể dùng IP văn phòng, tài khoản nội bộ hoặc thiết bị được quản lý.
Website cá nhân không cần phức tạp như vậy.
- mở trang thiết lập riêng
- đặt owner Cookie có thời hạn
- bỏ qua request mang Cookie đó trong analytics
- có cách xóa trạng thái owner
Lưu ý đây là thiết lập theo từng browser.
Máy tính, điện thoại, browser khác, profile khác và chế độ ẩn danh là những môi trường khác nhau.
Đánh dấu một browser không làm mọi phiên bản của bạn biến mất khỏi Internet.
6. Dữ liệu cũ không tự giảm
Nếu hôm nay bạn bật owner exclusion, pageview của hôm qua không tự biến mất.
Mục tiêu thực tế thường chỉ là:
“Từ bây giờ không trộn lượt truy cập của mình vào nữa.”
Muốn sửa quá khứ phải xử lý lại raw log hoặc xây lại aggregate.
Với website còn nhỏ, mất nhiều giờ để sửa vài chục lượt truy cập của chính mình thường không đáng.
Chỉ cần ghi lại ngày chuyển đổi và tiếp tục.
7. Internal traffic filter của GA4 khác với Cookie tự tạo
Google Analytics 4 có cơ chế chính thức để xác định internal traffic bằng địa chỉ IP và loại chúng bằng data filter.
Cách này hợp với mạng văn phòng ổn định.
Nhưng người vận hành cá nhân có thể đổi giữa Wi-Fi nhà, dữ liệu di động, mạng khi đi du lịch, tethering hoặc VPN. Khi đó, chỉ dựa vào IP sẽ bất tiện.
Với first-party analytics tự xây, Cookie hoặc trạng thái đăng nhập đôi khi dễ dùng hơn.
Nhưng đây là hai cơ chế khác nhau.
Dùng GA4 thì làm theo quy trình internal traffic của GA4 và test filter trước. Dùng hệ thống riêng thì loại owner tại điểm thu thập của chính hệ thống.
8. Đánh giá tăng trưởng đa ngôn ngữ bằng external landing sau khi loại owner
Lượt truy cập của chính bạn có thể làm lệch so sánh giữa các ngôn ngữ.
Giả sử tổng số là:
ngôn ngữ chính: 70
ngôn ngữ khác: 30
Nhưng 70 gồm:
- 20 lượt kiểm tra của người vận hành
- 20 lượt điều hướng nội bộ
- 30 external landing
trong khi gần như toàn bộ 30 lượt ngoại ngữ là external landing.
Câu chuyện tăng trưởng thay đổi hoàn toàn.
Nếu muốn đo discovery và demand, hãy so:
external landing của ngôn ngữ chính
với
external landing của các ngôn ngữ khác
Đồng thời tách dữ liệu ngày và rolling window.
Tổng 7 ngày có thể giảm chỉ vì một ngày cũ có traffic cao rời khỏi cửa sổ.
9. Quy trình kiểm thử tối thiểu
Đừng dừng ở “chắc là chạy rồi.”
Hãy kiểm tra:
- owner flag có thực sự được lưu không
- mở một trang bình thường
- event không được ghi, hoặc bị loại vì là owner
- browser khác vẫn được tính
- xóa flag thì việc tính lại hoạt động
Developer tools có thể xem localStorage và Cookie.
Việc mở trang thiết lập không phải bằng chứng.
Máy tính rất giỏi làm đúng chỉ dẫn, nhưng không giỏi đoán ý định.
10. Kết luận — đưa chính mình ra khỏi mẫu trước khi ăn mừng quốc tế hóa
Thấy độc giả từ các ngôn ngữ khác bắt đầu xuất hiện là tín hiệu tốt.
Nhưng ngôn ngữ chính thường có một vị khách cực kỳ trung thành: người vận hành website.
Vì vậy:
- tách external landing và internal navigation
- đánh dấu rõ owner browser
- dùng localStorage cho event chỉ ở client
- dùng Cookie cho server hoặc Edge
- nhớ rằng chỉ mở trang không tự đăng ký owner
- không cần sửa lịch sử nếu không đáng
- đo demand đa ngôn ngữ bằng external landing sau khi loại owner
Nếu độc giả quốc tế thực sự đang đến, rất tuyệt.
Chỉ cần chắc rằng đội chủ nhà không thắng vì bạn tự bấm bảng điểm một trăm lần.
- MDN: Window.localStorage
https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage - MDN: Set-Cookie header
https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Set-Cookie - Google Analytics Help: Exclude internal traffic
https://support.google.com/analytics/answer/10104470
