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


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

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

    需求讨论阶段

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

    方案设计阶段

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

    前端模板制作阶段

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

    代码编写阶段

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

    测试阶段

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

    上线后

    通过线上日志数据,获取产品的正式表现,进行后续优化。
    通过各种日志(Nginx日志、Mysql慢日志、XHProf日志等等),分析线上环境和测试环境之间差异导致的性能问题,通过用户端的真实数据来确定优化点,然后按照紧急重要程度进行优化。
  • 相关阅读:
    android studio遇到的一系列问题
    flask接口入门实现简单的登录注册(二)
    flask接口入门实现简单的登录注册(一)
    第一节:django环境 模型 视图 后台
    设计模式二:建造者模式
    设计模式一:工厂模式
    mysql系列:创建数据库和用户及赋权
    mysql系列:mysql的数据类型
    mysql系列:数据库范式与mysql引擎
    mysql系列:centos7.6上安装mysql8.0
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3179274.html
Copyright © 2020-2023  润新知