2009-05-10 36 views
10

Cách tiếp cận tốt để giữ số lượng chính xác số trang đã được xem là bao nhiêu?số lượt xem trang chính xác ở Django

Tôi đang sử dụng Django. Cụ thể, tôi không muốn làm mới trang để tăng số lượng.

Trả lời

1

Theo như tôi biết, hiện không có trình duyệt nào gửi bất kỳ loại thông điệp/tiêu đề nào đến máy chủ cho biết yêu cầu có được làm mới hay không.

Cách duy nhất tôi có thể thấy để không tính người dùng làm mới trang là theo dõi IP và thời gian người dùng xem trang và sau đó nếu người dùng xem trang cuối ít hơn 30 phút trước sẽ loại bỏ nó như là một làm mới và không tăng số lượt xem trang.

IMO nhất trang làm mới nên được tính là một lần xem trang dù sao, là lý do duy nhất tôi có cho mới mẻ là để xem dữ liệu mới mà có thể đã được thêm vào, hoặc làm mới tình cờ thỉnh thoảng/tải lại sau một vụ tai nạn trình duyệt (phương thức trên sẽ loại bỏ).

+1

Theo dõi IP là ý tưởng tồi. Nhiều mạng cung cấp cùng một IP bên ngoài cho 'người dùng của nó. – Roman

+1

Vâng, một số phương pháp khác để theo dõi người dùng duy nhất sẽ tốt hơn (cookie, IP + Tác nhân người dùng), nhưng ý tưởng là loại bỏ lượt xem trang mà bạn nghĩ (như bạn không thể biết chắc chắn) là từ người dùng làm mới trang. – henrym

0

Bạn có thể cung cấp cho mỗi cookie của người dùng, hết hạn vào cuối ngày, có chứa một số duy nhất. Nếu anh ta tải lại một trang, bạn có thể kiểm tra thời tiết đã được tính vào ngày hôm đó.

0

Bạn có thể tạo bảng có khách truy cập duy nhất của các trang, ví dụ: VisitorIP + X-Forwarded-Đối với nội dung, chuỗi User-Agent cùng với một PageID của một số loại. Nếu bản thân dữ liệu không liên quan, bạn có thể tạo băm md5/sha1 từ các giá trị này (bên cạnh PageID của khóa học). Tuy nhiên, hãy cảnh báo rằng bảng này sẽ phát triển rất nhanh.

Tôi khuyên bạn không nên đặt cookie cho mục đích đó. Chúng có kích thước giới hạn và có nhiều trang được truy cập bởi người dùng, bạn có thể đạt đến giới hạn đó và làm cho giải pháp không đáng tin cậy. Ngoài ra nó làm cho nó khó khăn hơn để cache trang như vậy trên phía máy khách (xem Cacheability), vì nó trở thành nội dung tương tác.

0

Bạn có thể viết một phần mềm trung gian django và bắt request.url, sau đó thiết lập một bảng có các cột url/accesses. Cẩn thận với các giao dịch để cập nhật đồng thời. Nếu bạn có vấn đề tải, bạn có thể sử dụng memcached với incr hoặc thêm chức năng và định kỳ cập nhật bảng cơ sở dữ liệu để tránh các khóa giao dịch.

Các vấn đề liên quan