定义概念:
-
页面直出 : 用户请求直接返回的html文档.(区别于仅返回json数据)
-
时效性业务 : 与时间相关的业务。例如各类新闻.
-
LBS业务 : 基于用户地理位置相关的业务.
-
对比页面直出与现在全ajax渲染两种展现方式的优劣,时序图分析
- ajax拉取数据流程:
- 离线包或请求页面框架加载
- js加载解析执行
- 拉取数据,渲染页面
- 呈现数据
- 页面直出流程分析:
- C端请求,前端服务直接返回完整页面
- js加载实行
- 呈现数据
- ajax拉取数据流程:
-
页面直出优势分析,静态化方式优化分析
- 可控度更高的性能优化方式
- 简化首页渲染逻辑
- 首页可以非常快的展示数据
- 简化现有开发流程
- 由于出数据,也在前端,所以对测试和业务开发完成度,前端有更大的把控程度。( 即前端服务端开发完毕,就可以利用测试固件进入业务测试阶段,而不必等待CGI的开发,待CGI开发完成,业务部分基本不用动,直接对CGI数据进行筛选和过滤即可,有效的提高单个CGI的复用率,将实际业务与CGI解耦,可以使得他们更专注于数据模型 )
- 性能方面,前端服务器可以缓存部分请求数据,以减少对后端请求和缩小响应时间
- 静态化好处
- 减少服务端响应时间
- CDN路由优化
- 常用于只有时效性的信息发布类业务
- 静态化问题
- 很多基于定位的服务,难以静态化
- 静态化目前比较典型的适用业务,吃喝玩乐的全国页(这个页面是在定位失败后,拉取的一个配置数据进行展示 ,数据只有时效性,与位置无关。 )
-
结合现有业务直出特点,分析适用情况,简单的解决方案
- LBS业务,需要根据定位信息来提供相关服务,例如吃喝玩乐的附近,现在的做法是加载完所有资源后,在对应执行脚本位置去拉取定位信息,之后根据结果请求相关接口。
- 对于这种情况,可以预读取定位信息,可以在请求页面的时候就带上定位信息,在当前页面操作时就读取到下次可能需要的定位信息,这样在服务端拼视图的时候就知道该用什么样的数据了。demo
- LBS业务,需要根据定位信息来提供相关服务,例如吃喝玩乐的附近,现在的做法是加载完所有资源后,在对应执行脚本位置去拉取定位信息,之后根据结果请求相关接口。