性能优化-开发流程中的性能优化

性能优化不是某一我的的职责范围,也不是某一个开发阶段的工做内容,而应该是贯穿整个开发流程、每一个人员都参与的活动。若是等到项目上线后再进行优化,会致使咱们成为需求
的被动接受者。为了不这种状况,咱们应该主动出击,在项目初始阶段就将性能问题融入进去。

需求讨论阶段

开发人员分析实现方案,提出建议,在不影响产品目的的前提下,引导产品经理对需求作一些调整以获取更高的性能。
好比对于产品经理提出的一些实时性统计,能够酌情修改成准实时统计,将缓存利用起来;
对于初始就须要返回大量数据的页面,能够适当调整需求,减小数据量。

方案设计阶段

明确产品业务架构,挖掘潜在风险点;注重动静数据的分离,利用好缓存;根据不一样的项目类型,选择合适的技术。
好比须要开机启动的页面(咱们的页面是嵌入在公司的客户端内部的),那么尽可能静态化或者采用其余支持大并发的部门的存储方案来实现(咱们部门由于资源问题,对于大并发支持得还不是很好);
页面数据能够拆分的,只在首次请求中返回静态的缓存数据,而后经过异步加载的方式获取剩余的动态数据;
针对并发量大的内容,可用采用HandlerSocket、主从等支持高并发的方案。

前端模板制做阶段

对样式进行分类,利用CSS Sprite技术,将小图片,特别是一些图标类的图片,整合到一块儿,减小其数量。
特别是针对长期项目,随着后续需求的增长和修改,样式图片、样式文件的数量会大量增长。这是影响页面性能的一大因素,由于一方面这些资源太分散,会致使请求数增多;
另外一方面这些东西大都是和页面可见性息息相关的,请求过慢会致使页面样式错乱。所以能够在模板制做阶段,和前端同事沟通,对图片、样式文件作分类,而后进行合并。

代码编写阶段

遵循一致的代码编写规范,互相codereview,同时借助工具进行代码性能分析,避免代码级别的性能问题。
目前统一采用Zend编码规范,而且有PHPMD工具会对代码进行静态扫描,发送邮件通知开发人员;
同时在测试环境和部分产品的正式环境部署了XHProf,用于代码性能的分析。经过这两个工具,能够排查代码中的逻辑嵌套过深、函数误用、递归等问题。
另外在代码编写完成后,必定要记得将图片、样式文件、JS脚本文件压缩整合后,上传到公司专门的资源服务器上。
一方面是由于资源服务器采用了和产品服务器不一样的主机名,可以增长浏览器对资源的并行下载数;另外资源服务器上的文件都作了缓存,也能加快用户二次访问的速度。
切忌在正式产品中使用本地图片和脚本资源。

测试阶段

对于有并发量要求的接口和页面进行压力测试。
对于有并发要求的页面和接口作一个预估,而后主要采用JMeter进行并发测试,保证在预估值之上必定充分余量的状况下,页面或接口仍能正常使用。

上线后

经过线上日志数据,获取产品的正式表现,进行后续优化。
经过各类日志(Nginx日志、Mysql慢日志、XHProf日志等等),分析线上环境和测试环境之间差别致使的性能问题,经过用户端的真实数据来肯定优化点,而后按照紧急重要程度进行优化。
相关文章
相关标签/搜索