我正在制作一个具有无限滚动的网站。也就是说,当用户向页面底部滚动时,新的内容块将被追加到页面底部。这与Facebook非常相似。以下是加载了3页的示例:
_________
| |
| 0 |
|_________|
| |
| 1 |
|_________|
| |
| 2 |
|_________|
当用户在最后一页上点击某个东西时,我会将他们带到一个单独的详细信息页面。但是,如果用户返回到搜索结果页面,则我没有记住他们之前的位置,必须重新加载第0页。
_________
| |
| 0 |
|_________|
我知道一些老派的方法来解决这个问题,但它们各自都有一些严重的问题:
哈希URL
我可以在每次加载新页面时更新URL。例如:www.website.com/page#2。当用户进入详细页面并返回时,URL会告诉我最后加载的页面,因此我会为他重新加载该页面:
_________
| |
| 2 |
|_________|
但这会导致用户体验较差。只有第2页被加载,用户无法向上滚动查看旧内容。我不能只加载0、1、2页,因为那样会使服务器超负荷运行,考虑到返回按钮占据了50%的网络流量(Jacob Nielsen的研究)。
本地存储
Cookie 的存储容量不足以存储许多页面数据。 本地存储(Local Storage) 应该有足够的空间。一种想法是将所有加载的页面存储在本地存储中。当用户回到搜索结果时,我可以从本地存储中加载,而不是访问服务器。但这种方法的问题是我的大部分用户使用的浏览器不支持本地存储(IE7)。