Tôi đang xây dựng trang web cho công việc và một trong những tính năng quan trọng hơn là lưới nội dung đa phương tiện hiển thị dữ liệu. Theo mặc định, nó chỉ hiển thị 20 mục trên mỗi trang, nhưng chúng tôi có ~ 200 mục trong cơ sở dữ liệu có thể được lọc, sắp xếp và tìm kiếm.Một số phương pháp hay nhất cho tương tác giữa khách hàng và máy chủ là gì?
Nhóm bán hàng và tiếp thị của chúng tôi cũng yêu cầu tính năng "liệt kê tất cả" để họ có thể hiển thị tất cả dữ liệu ở một nơi và cuộn qua chứ không phải trang thông qua dữ liệu.
toàn bộ hệ thống này được xây dựng sử dụng ASP.Net MVC ở phía máy chủ, jQuery và Flexigrid về phía khách hàng, và sử dụng JSON để trao đổi dữ liệu giữa hai qua AJAX.
Tôi đã nhận được phần chuyển dữ liệu thực sự khá chắc chắn. Một trang gồm 20 kết quả cần 800ms cho toàn bộ yêu cầu (POST một yêu cầu tới máy chủ qua Flexigrid và nhận phản hồi). Đó là quá trình xử lý phía máy khách mất nhiều thời gian.
Tôi có thể giảm tải một số xử lý phía máy khách cho máy chủ. Nhưng điều này sẽ làm cho hoạt động phía máy chủ mất nhiều thời gian hơn và làm cho kích thước của tài liệu trở lại lớn hơn nhiều. Không phải là vấn đề trong các tình huống có kết nối Internet tốc độ cao ... nhưng điều đó không nhất thiết phải xảy ra.
Tùy chọn khác mà tôi có là tải xuống càng nhiều dữ liệu càng tốt và thay đổi phần lớn xử lý dữ liệu cho khách hàng. Điều này làm giảm thời gian yêu cầu xuống về cơ bản không (chỉ tìm nạp các phần tử thay đổi thay vì toàn bộ tập dữ liệu). Nó sẽ hoạt động khá tốt trên các máy có CPU nhanh và nhiều RAM, nhưng đó cũng không nhất thiết phải là trường hợp.
Kể từ ít nhất một người gắn cờ này là "không phải là một câu hỏi thực sự," hãy để tôi làm rõ ...
- Những gì tôi có thể có thể làm gì để giảm bớt các vấn đề thời gian xử lý client-side, không nhúc nhích quá nhiều xử lý đến máy chủ mà tôi kết thúc với một vấn đề thời gian truyền dữ liệu?
- Một số phương pháp hay nhất khi cân bằng xử lý phía máy khách với xử lý phía máy chủ là gì?
- Có tốt hơn khi gặp lỗi ở phía máy chủ hoặc ứng dụng khách không?
- Tôi có thể sử dụng một số công cụ nào để tối ưu hóa tốt hơn các trao đổi này để mọi thứ không tiếp tục bị xáo trộn?
Máy chủ gửi đối tượng JSON cho khách hàng. Đối tượng JSON sau đó được nạp vào Flexigrid. Flexigrid tự đọc đối tượng vào một bảng, sau đó thực hiện một số hoạt động 'document.createElement()' đắt tiền để định dạng bảng để hiển thị. Nó chuyển đổi đối tượng thành một bảng HTML rất chuyên sâu. – EAMann
Cũng đọc phản hồi chi tiết của tôi bên dưới ... – EAMann