Tôi đang tạo trang web có cuộn vô hạn. Tức là, khi người dùng cuộn xuống cuối trang, một khối nội dung mới được thêm vào phía dưới. Nó rất giống với Facebook. Dưới đây là ví dụ về 3 trang được tải:Làm cách nào để lưu một chồng nội dung AJAX vô hạn khi người dùng rời khỏi trang?
_________
| |
| 0 |
|_________|
| |
| 1 |
|_________|
| |
| 2 |
|_________|
Khi người dùng nhấp vào một cái gì đó trên trang cuối cùng, tôi đưa họ đến trang chi tiết riêng. Nhưng nếu người dùng nhấp lại vào trang kết quả tìm kiếm, tôi không có bộ nhớ về vị trí trước đó của họ và phải tải lại trang 0.
_________
| |
| 0 |
|_________|
tôi biết một số phương pháp cũ-trường để giải quyết điều này, nhưng họ đều có một số vấn đề nghiêm trọng:
URL Hash
tôi có thể cập nhật URL mỗi khi một trang mới được tải. Ví dụ: www.website.com/page#2. Khi người dùng truy cập trang chi tiết và quay lại, URL cho tôi biết trang được tải cuối cùng, vì vậy tôi tải trang đó cho anh ấy:
_________
| |
| 2 |
|_________|
Nhưng đây là trải nghiệm người dùng kém. Chỉ trang 2 được tải. Người dùng không thể cuộn lên để xem nội dung cũ hơn. Tôi không thể tải các trang 0, 1 và 2 vì điều đó sẽ làm quá tải máy chủ, xem xét nút quay lại chiếm 50% lưu lượng truy cập web (nghiên cứu của Jacob Nielsen).
Bộ nhớ cục bộ
Cookie không có khả năng lưu trữ nhiều trang dữ liệu. Local Storage phải có đủ không gian. Một ý tưởng là lưu trữ tất cả các trang được tải vào Bộ nhớ cục bộ. Khi người dùng quay lại kết quả tìm kiếm, tôi tải từ bộ nhớ cục bộ thay vì nhấn vào máy chủ. Vấn đề với cách tiếp cận này là một phần lớn người dùng của tôi ở trên các trình duyệt không phải là support local storage (IE7).
Tại sao tải tất cả các trang bạn đã hiển thị cùng một lúc quá tải máy chủ khi yêu cầu chúng 1 tại một thời điểm sẽ không? – Tejs
… với bộ nhớ vô hạn. – Phrogz
@Tejs: Tôi đã suy nghĩ không chính xác. Tôi có nghĩa là tải một trăm trang cùng một lúc là chậm cho người sử dụng và những nơi không cần thiết gánh nặng trên máy chủ. – JoJo