LocalStorage,几个Ajax请求还是巨大的Ajax请求?

Ant*_*una 7 performance html5 json local-storage jquery-mobile

我面临一个非常大的问题(至少对我而言).我会给你一些背景知识.

我正在开发一个移动网络应用程序,它将显示我所在城市的公交车站和自行车站的信息.它将显示公共汽车和自行车停靠点的GMap标记,如果您点击它,您将获得有关公共汽车的到达时间或可用的自行车数量的信息.我有很好的涵盖.

有问题的部分是装载车站.

我的第一种方法是在页面加载时加载全部站点.它大约是200 Kb的JSON加上迭代数组并将其放入地图的时间.它们被隐藏加载,因此当用户点击行名称时,它们将使用"findMarker"函数显示.如果地图上存在其他工作站,则会隐藏它们以避免地图中有太多标记.

这适用于iPhone 4或全新HTC等新手机,但它在2年前的手机上表现不佳.

我想的第二种方法是按要求加载它们,所以你点击工作站,它们被加载到地图,然后显示但这导致两个问题:

  • 第一个是你可能(或可能不是)执行几个可能结束相同的请求(?)
  • 第二个是为了避免有这么多标记,它们应该被隐藏或删除,这样你可能会删除一段时间内应该再次需要的信息,比如作为一个组而不是一行加载的自行车站.

最后,我想过使用LocalStorage来存储它们,因为它们不会改变那么多,但是会有大量的数据然后,因为它们是关键值而难以检索它们(以及我我不太确定这一点.我发现不支持此功能的设备必须回退到其他选项之一.

所以,那就是说,我认为可能是某人面临一些类似的问题,并以某种方式解决了它或对我有一些提示:).

任何帮助将非常感激.

Ste*_*nOS 5

最佳方法取决于用户的行为.他们通常点击很多站点还是只点击几个站点?他们更喜欢更快的启动(按需加载)还是更敏感的站点详细显示(预加载数据)?

值得研究的方法是按请求加载数据,但使用浏览器缓存(ETag和Expires头)以避免反复检索相同的信息.这可以在不处理LocalStorage的情况下解决您的问题.

有关浏览器缓存ETag vs Header Expires的不同方法,请参阅此问题