web开发中常用的分页方式,根据页码进行分页。暂且称为 Web式分页
根据页码 pageIndex 和分页大小 pageSize 进行分页。
这种分页方式,在web中使用没有什么太大问题,但是在App分页中能否套用这种分页方式呢?
App上的分页方式从表现上看,基本都是上拉加载更多形式的流式分页。如果后台接口仍然按照Web式分页方式进行设计,会有如下问题:
a、数据重复
b、数据缺失
c、offset过大时查询效率低
MySQL的limit给分页带来了极大的方便,但数据量一大的时候,limit的性能就急剧下降。
由此可见,传统Web式分页接口并不适合App分页。
3、App流式分页服务端设计
a、cursor游标式分页
优点:
1)、能够避免数据重复/遗漏
2)、limit性能不会cursor数值大小影响,性能稳定
缺点:
1)、适用于只是按照时间追加的方式的简单排序
b、按照时间分片缓存
非全量数据,只是部分热门数据,因为数据变化太快,可以基于时间段生成多个缓存。对于数据可以按时间段(5分钟)生成一个缓存分片。
具体流程如下:
此处的timestamp值,请求第1页数据时,timestamp传0,服务端检查timestamp<=0,就将当前系统时间赋值给timestamp返回,请求第2,3,...n页数据时,将系统返回的timestamp传入。
缓存的key是根据timestamp进行计算的,比如5分钟一个分片,key=list_201605231700。
应用场景
比如首页热门,只是一些热门文章,排序有一定的复杂性,且相对容易变动。
目前专题中列表排序是按照点赞数排序的,分页请求
出现了重复的数据,是因为该排序是实时数据,且没有游标,无法感知前面加载的数据。
c、id列表一次性下发给App
1、请求第一页数据之前先缓存所有id列表
2、请求每页数据时,只需带入相关的id列表参数
这种方式适用于id列表不会很大(数百条数据)的业务场景,例如腾讯新闻。
这个问题有些笼统,一个完整的app有简单有复杂,不同的app应用功能的差异也导致不同的技术实现或者算法模型。大体来说,一个app从设计到最终实现需要懂得以下几个必要方面:1、前期需求规划与信息、交互设计——需要制定出一个完整的需求文档,功能文档,流程图,时序图。
2、交互设计、UI设计——设计出基本且完善的原型图和app基础的交互设计效果,之后再根据这些设计出完整的UI界面并学会切图,一些需要做自适应的素材图片需要做点9patch。 这里还需要懂得px,pt和dp之间的换算,屏幕密度的换算和相互之间的系数,以便app能完美适应不同分辨率设备。其中交互设计需要懂得很多人机操作的技巧经验,掌握Axure等交互工具的使用,UI设计需要掌握Photoshop和Illustrator等操作。
3、使用ADT之类的开发环境进行app开发,最基本的也得掌握java语言,熟悉android环境和机制,这里面涉及面广,请根据项目自行学习相关知识。
4、如果不是单机版的app,需要用到服务器,那还得掌握WebService相关知识和开发语言,常用的有ASP.Net,PHP,JSP等。
5、熟悉并能开发数据库。
6、某些功能需要做算法,这还需要一定得专业知识,尤其是数学基础。
7、熟悉API接口开发,这里包括自行开发API的能力以及调用第三方API的经验。
8、熟悉TCP/IP,socket等网络协议和相关知识。
9、熟练掌握App发布的流程,真机调试技巧,证书,打包,上架。
App开发其实不一定适合一个人搞,太费劲,除非是一个单机版的小应用,或者利用现成的api开发简单的第三方应用,否则还是让一个团队来完成各自擅长的领域。
服务器价位很多种了,要根据app业务和用户群选择服务器配置。一般来说4核8G内存是起步配置了,后期流量大起来了, 可能要升级配置。
国内考虑用阿里云或者腾讯云都不错。成本方面也是云服务器较低一些,实体服务器较贵一些。发展的大趋势就是奔着云计算,上云去的。从你的需求来看,国内选择那几个比较大的商家合适,至于名字和具体配置选择也是一门学问,老魏会帮助你提供参考意见。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)