zoukankan      html  css  js  c++  java
  • 性能优化-开发流程中的性能优化

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

    需求讨论阶段

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

    方案设计阶段

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

    前端模板制作阶段

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

    代码编写阶段

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

    测试阶段

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

    上线后

    通过线上日志数据,获取产品的正式表现,进行后续优化。
    通过各种日志(Nginx日志、Mysql慢日志、XHProf日志等等),分析线上环境和测试环境之间差异导致的性能问题,通过用户端的真实数据来确定优化点,然后按照紧急重要程度进行优化。
  • 相关阅读:
    hdoj 2803 The MAX【简单规律题】
    hdoj 2579 Dating with girls(2)【三重数组标记去重】
    hdoj 1495 非常可乐【bfs隐式图】
    poj 1149 PIGS【最大流经典建图】
    poj 3281 Dining【拆点网络流】
    hdoj 3572 Task Schedule【建立超级源点超级汇点】
    hdoj 1532 Drainage Ditches【最大流模板题】
    poj 1459 Power Network【建立超级源点,超级汇点】
    hdoj 3861 The King’s Problem【强连通缩点建图&&最小路径覆盖】
    hdoj 1012 u Calculate e
  • 原文地址:https://www.cnblogs.com/zhouchangju/p/3179143.html
Copyright © 2011-2022 走看看