App的相关探究

工具:Fidder2、HiJson


自己比较喜欢探究其他的App某些功能是如何实现的,这篇博客会不定期更新。

(1)聚美

目的:看看如何加载数据的。

A、点击“名品特卖”,可以将返回了50条数据,通过查看json数据可以看到。

下拉继续加载50条。返回的json数据如下:

{
    "header": [],
    "item_count": 104,
    "item_list": [],
    "item_per_page": "50",
    "page": "3",
    "page_count": 3
}

省去了中间具体的数据,可以看到参数还是非常的清晰的,item_count是总条数。item_per_page是每页返回的条数。page第三页,page_count是总共3页。

通过这个参数就可以知道已经加载完成了没有。

B、当讲上面3页,全部加载完成之后,重新刷新,可以看到此时还是重新返回了50条数据。

这个跟第一次进来的时候返回的50条数据基本一样的。此时ListView重新加载这50条数据,而以前的104条数据全部移除。

当时给自己的想法这里有很多重复的数据,为什么不将当前最新的item对应的id,传递过去,服务器根据这个id取出里面最新的呢。

这样子节省了流量。


可能一下几点:电商app,商品的更新速度比较快,需要实时获取最新的。所以缓存那么多数据是没有太大的意义。比如这里已经加载了

104条数据了,上拉刷新移除这104条,加载最新50条,哪怕这50条数据跟上一次里面的50条一样。假设缓存了,那么缓存的数据中物品

的数据可能已经变化了,这就没有将最新的数据给用户,而这个最新的数据很重要。

(2)今日头条

评论的上拉加载更多。

上拉加载更多的时候,有一种情况,上拉传给服务器当前的页号。

服务器返回当前号的数据和数据总条数。当在过一段时间,之后再次上拉加载数据的时候,由于评论在这段时间内可能已经多加了几条。

服务器返回的数据中有几条是已经在客户端存在的,客户端根据传过来的总条数和页号可以判断出那些重复的数据,从而不加载重复的那几条数据。


在换一种情形,现在client端加载了1页数据(20条),client记录了目前总条数为80条,然后过了半小时,在半小时之内服务器的评论数据新增加了50条。

准备上拉刷新,client传过去的是page是2,服务器返回的总条数是130条,服务器返回的数据是130条中的21~40条给client,而client已经保存的20条数据

对应在服务器上是51~70。而返回的21~41条数据本来应该在client的20条数据后面显示,可是这20条石最新产生的,根据时间需要显示在前面。

你可能感兴趣的:(App的相关探究)