tôi sẽ đề nghị giữ nó đơn giản ...
Tạo một bảng cơ sở dữ liệu để lưu trữ các sự kiện của bạn, chèn vào bảng mà khi thích hợp, sau đó chỉ cần thực hiện một kỹ thuật ajax bỏ phiếu đơn giản để đạt server mỗi x giây ở phía khách hàng.
Tôi có mối quan tâm với các giải pháp khác xem xét sử dụng phương pháp tiếp cận thông báo đẩy hoặc sử dụng kho lưu trữ dữ liệu noSql. Nó phức tạp hơn rất nhiều so với một hệ thống thông báo kéo truyền thống bằng cách sử dụng các công cụ được xây dựng trong khung công tác Django, và ngoại trừ các trường hợp ngoại lệ rất hiếm, là quá mức cần thiết. Trừ khi bạn yêu cầu một giải pháp thời gian thực nghiêm ngặt, hãy đơn giản và sử dụng các công cụ đã tồn tại trong khung công tác, và đối với những người phản đối dựa trên cơ sở dữ liệu hoặc hiệu suất mạng, tất cả những gì tôi phải nói là tối ưu hóa sớm là gốc của Tất cả đều xấu xa.
Xây dựng mô hình có chứa dữ liệu hoạt động gần đây cụ thể cho ứng dụng của bạn, bất cứ khi nào ứng dụng của bạn thực hiện hoạt động mới bạn có thể chèn vào bảng này.
Chế độ xem của bạn sẽ đơn giản giống như bất kỳ chế độ xem nào khác, kéo các hàng x hàng từ bảng RecentActivity
này (tùy chọn dựa trên tham số truy vấn và bất kỳ thứ gì).
Sau đó, ở phía khách hàng, bạn chỉ cần có một con chó ajax đơn giản đánh vào chế độ xem của bạn sau mỗi x giây. Không thiếu các plugin phức tạp và công nghệ, bạn có thể sử dụng, nhưng văn bản của riêng bạn mà không phải là phức tạp hoặc là:
function simplePoll() {
$.get("your-url", {query-parameters}, function(data){
//do stuff with the data, replacing a div or updating json or whatever
setTimeout(simplePoll, delay);
});
}
Ý kiến của tôi là vấn đề hiệu suất không thực sự vấn đề cho đến khi trang web của bạn là thành công đủ cho họ là một vấn đề. Cơ sở dữ liệu quan hệ truyền thống có thể mở rộng khá tốt cho đến khi bạn bắt đầu đạt tới mức thành công như Twitter, Google, v.v. Hầu hết chúng ta không ở cấp độ đó :)
Đây là lời khuyên tốt, nhưng câu hỏi đã nói cụ thể "trong django (với AJAX bỏ phiếu dài)". – dkamins