Как сохранить бесконечный стек содержимого AJAX, когда пользователь покидает страницу?

Я делаю сайт с бесконечной прокруткой. То есть, когда пользователь прокручивает страницу вниз, новый блок контента добавляется внизу. Это очень похоже на Facebook. Вот пример загруженных 3 страниц:

 _________
|         |
|    0    |
|_________|
|         |
|    1    |
|_________|
|         |
|    2    |
|_________|

Когда пользователь щелкает что-то на последней странице, я переношу его на отдельную страницу сведений. Но если пользователь вернётся на страницу результатов поиска, я не смогу вспомнить его предыдущее местоположение и должен снова загрузить страницу 0.

 _________
|         |
|    0    |
|_________|

Я знаю некоторые методы старой школы для решения этой проблемы, но у каждого из них есть серьезные проблемы:

Хэш-URL

Я мог бы обновлять URL-адрес каждый раз, когда загружается новая страница. Например: www.website.com/page#2. Когда пользователь переходит на страницу сведений и обратно, URL-адрес сообщает мне последнюю загруженную страницу, поэтому я загружаю ее для него:

 _________
|         |
|    2    |
|_________|

Но это плохой пользовательский интерфейс. Загружается только 2 страница. Пользователь не может прокручивать вверх, чтобы увидеть более старый контент. Я не могу просто загрузить страницы 0, 1 и 2, потому что это перегрузит сервер, учитывая, что на кнопку «Назад» приходится 50% веб-трафика (исследование Джейкоба Нильсена).

Локальное хранилище

Файлы cookie не имеют емкости для хранения большого количества страниц данных. В локальном хранилищедолжно быть достаточно места. Одна из идей состоит в том, чтобы хранить все загруженные страницы в локальном хранилище.Когда пользователь возвращается к результатам поиска, я загружаю их из локального хранилища, а не на сервер. Проблема с этим подходом заключается в том, что большая часть моих пользователей использует браузеры, которые не поддерживают локальное хранилище(IE7).

11
задан Bergi 17 April 2012 в 18:39
поделиться