2009-01-02 59 views
37

Điều gì là tốt nhất để xử lý phân trang? Phía máy chủ hoặc làm nó tự động bằng cách sử dụng javascript?Pagination: Server Side hoặc Client Side?

Tôi đang làm việc trên một dự án nặng trên ajax và kéo dữ liệu động, vì vậy tôi đã làm việc trên hệ thống phân trang javascript sử dụng dom - nhưng tôi bắt đầu nghĩ nó sẽ tốt hơn để xử lý tất cả phía máy chủ.

Suy nghĩ của mọi người là gì?

Trả lời

58

Câu trả lời đúng tùy thuộc vào mức độ ưu tiên của bạn và kích thước của tập dữ liệu được phân trang.

Server side pagination là tốt nhất cho:

  • dữ liệu lớn thiết
  • tải trang tiếp cận
  • nhanh hơn ban đầu đối với những người không chạy javascript

phía khách hàng pagination là tốt nhất cho:

  • dữ liệu nhỏ thiết
  • nhanh hơn tải trang tiếp theo

Vì vậy, nếu bạn đang paginating vì những lý do chủ yếu là mỹ phẩm, nó có ý nghĩa hơn để xử lý nó phía khách hàng. Và nếu bạn đang phân trang để giảm thời gian tải ban đầu, phía máy chủ là lựa chọn hiển nhiên.

Tất nhiên, lợi thế của khách hàng về thời gian tải trang tiếp theo sẽ giảm bớt nếu bạn sử dụng Ajax để tải các trang tiếp theo.

7

Thực hiện ở phía máy khách sẽ làm cho người dùng của bạn tải xuống tất cả dữ liệu lúc đầu, điều này có thể không cần thiết và sẽ xóa lợi ích chính của phân trang.

Cách tốt nhất để làm như vậy cho các ứng dụng AJAX như vậy là làm cho AJAX gọi máy chủ cho trang tiếp theo và thêm cập nhật trang hiện tại bằng cách sử dụng tập lệnh phía máy khách.

+2

Nếu thời gian tải quan trọng, bạn nên tải trước trang tiếp theo bất cứ khi nào một trang được tải. Điều đó sẽ dẫn đến không tải thời gian trừ khi có ai đó chuyển tiếp bằng hai trang rất nhanh. – ThiefMaster

3

Phía máy chủ - gửi cho khách hàng vừa đủ nội dung cho chế độ xem hiện tại.

5

Nếu bạn có các trang lớn và một số lượng lớn các trang bạn yêu cầu các trang theo khối từ máy chủ thông qua AJAX tốt hơn. Vì vậy, hãy để máy chủ thực hiện phân trang, dựa trên URL yêu cầu của bạn.

Bạn cũng có thể tìm nạp trước một vài trang tiếp theo mà người dùng có thể sẽ xem để làm cho giao diện có vẻ nhạy hơn.

Nếu chỉ có vài trang, hãy lấy tất cả các trang ở phía trước và phân trang trên máy khách có thể là lựa chọn tốt hơn.

3

Ngay cả với kích thước dữ liệu nhỏ, lựa chọn tốt nhất sẽ là phân trang bên máy chủ. Bạn sẽ không phải lo lắng sau này nếu ứng dụng web của bạn tăng thêm nữa.

Và đối với kích thước dữ liệu lớn hơn, câu trả lời là hiển nhiên.

2

Trong một giới hạn thực tế về giới hạn, tôi sẽ trang ở phía máy chủ để bảo tồn tất cả các tài nguyên được liên kết với việc gửi dữ liệu.Ngoài ra, máy chủ cần tự bảo vệ bản thân khỏi ứng dụng độc hại/hỏng hóc yêu cầu trang HUGE.

Khi mã đó đang vui vẻ chugging, tôi sẽ thêm "thông minh" cho khách hàng để có được trang "tiếp theo" và "trước đó" và giữ nó trong bộ nhớ. Khi trang người dùng đến trang tiếp theo, hãy cập nhật bộ nhớ cache của bạn.

Nếu phần mềm máy khách thực hiện loại bộ đệm trang này, hãy xem xét độ tuổi dữ liệu của bạn nhanh (có thể thay đổi) và nếu bạn nên kiểm tra xem trang dữ liệu đã lưu trong bộ nhớ cache của bạn vẫn hợp lệ. Có thể yêu cầu lại nếu nó có độ tuổi trên 2 phút. Có thể có một lá cờ "bẩn" trong đó. Một cái gì đó như thế. Hy vọng bạn thấy điều này hữu ích. :)

2

Tôi thích phân trang bên máy chủ. Tuy nhiên, khi thực hiện nó, bạn cần phải chắc chắn rằng bạn đang tối ưu hóa SQL của bạn đúng cách. Ví dụ, tôi tin vào MySQL, nếu bạn sử dụng tùy chọn LIMIT nó không sử dụng chỉ mục để bạn cần phải viết lại sql của bạn để sử dụng chỉ mục đúng cách.

G-Man

3

Bạn có nghĩa là JavaScript của bạn có tất cả dữ liệu trong bộ nhớ và hiển thị một trang một lần? Hoặc nó tải xuống mỗi trang từ máy chủ vì nó cần thiết, sử dụng AJAX?

Nếu sau này, bạn cũng có thể cần suy nghĩ về sắp xếp. Nếu bạn sắp xếp sử dụng JavaScript, bạn sẽ chỉ có thể sắp xếp một trang tại một thời điểm, điều này không có ý nghĩa gì nhiều. Vì vậy, phân loại của bạn nên được thực hiện trên máy chủ.

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