通过自己速度优化以及昨天的旁听,有以下总结,只记住了部分,可能还有错的,多多沟通 ^_^:
1. 优化页面,首先要搞清楚页面的功能模块,以及模块间的先后逻辑关系
注:可以去掉已经不需要的代码。同时,在取数据的时候,如果有先后逻辑,若前者无数据,后者可以不取,减少数据的查询量。
2. 通过debug或者log日志,分析controller和page等调用的时间是否在正常的范围之内,若异常可着重分析。
3. 对于solr的使用:
首先,不能把希望寄托在别人的身上,比如solr本身的查询速度,主要的应该从自身开始优化。
其次,where的条件命中量 尽可能的减少。
然后,可以分析数据,重构方法,减少每次的solr查询次数,比如 有的是每次搜索一个id,可以通过in来一次查询
然后,当有多次查询的时候,如果有先后逻辑关系,当前者搜索无结果时,下面的查询可不进行,或者根据逻辑关系,再进行相关查询,而不是每次把所有的数据都查询出来。
4. 加快取数据的速度,可以考虑使用zmq或者缓存,当然,要尽量增加缓存的命中率。
当数据量较少时,可以考虑全部存缓存,不用查询solr。
5. 对于api的调用,可以选择异步的方式。
6. 在页面上,尽量的少用component。
分析页面模块,对于实时要求并不高的,可以选择显示缓存中的内容,即使没有内容或者内容不是最新,在其他地方异步更新缓存。
对于一些用户加载时看不到或者不太引人注意的地方,可以加载后使用ajax异步调用然后再显示数据。