不管我们的编程语言发展得如何如何的先进,如何如何的自动化,都避免不了要涉及或者解决一个问题,就是产品性能优化的问题,下面我们就来聊聊一些常见的前后端优化方式。
减少请求次数
这是前端优化经常使用的方式,为什么要减少请求次数呢?因为前端的代码会引入很多图片、CSS和JavaScript等等资源文件,但是目前很多浏览器不能够在一个请求上完成对所有资源文件的请求,并且一个浏览器对一个域名的并发请求数是有限制的,多余的资源文件请求将被排队,从而表现为一直在加载,于是为了减少请求次数,我们不得不将很多CSS和JavaScript、图片进行合并,从而减少请求数,随着HTTP2的引入,未来这种现状应该会改变的,目前的解决方案就是采用多域名或者第三方CDN等。
内存到磁盘的优化
由于所有的有效数据最后都会保存到具有永久存储特征的磁盘里面去,但是由于磁盘本身的特点,它的访问速度相比内存慢很多,这样磁盘的输入输出在高负载下必然会成为一个瓶颈,导致CPU持续空闲以等待输入输出结束(表现为CPU使用率低,应用性能低),所以将内存数据保存到磁盘的方式也是一个优化方向,比如基于MySQL就引入了Double write特征来优化,同时很多文件系统也提供了很多方法来优化,具体到程序的话,就是尽可能减少输入输出,比如将一个查询多条数据的SQL语句优化到仅仅查询几条数据的SQL语句、将日志数据每隔多少时间才同步到磁盘而不是实时同步。
缓存执行结果
这种优化方式想必很多程序员都使用过或者听说过,就是将某个执行结果缓存起来,以便下次使用;比如将数据库的数据读取出来然后缓存到专业的缓存系统里面,这样下一次需要同样数据的时候,就不直接从数据库读取数据而是从缓存里面读取,常见的应用场景比如PHP读取数据缓存到Memcached或者Redis里面,再如,JavaScript读取服务端的一些数据缓存到sqlite或者localStorage里面,还有一种基于数据库的缓存想必大家也听说过,比如MySQL的查询结果缓存,就是将某个查询SQL语句的结果缓存起来以便下次使用,学过PHP的人,或许还用过Smarty的编译缓存等,以上举例都在说明将执行结果缓存起来能够一定程度上优化我们的程序。
减少原有执行步骤
假设做某件事的步骤是A、B、C、D,E,现在我们如果将某个步骤或者某几个步骤减少执行,是不是也能够达到优化程序的目的呢?这种优化场景就主要体现在我们的业务逻辑实现上,我们有时将业务逻辑换一种方式来实现,或许就不会有这么多的步骤,比如要一个基于年月的统计数据,这里我们将统计数据放在数据表里面的,一开始我们可以创建很多年月份,这样实现统计的时候我们没有必要先去数据库里面检查一下该年月是否已经统计,这样之后仅仅修改这些年月的值,大家想想,这样是不是又减少了一个统计逻辑呢?
上面说了几种常见的优化方式,如果有什么问题,可以在评论中提出来,我会尽力解答的,如果觉得本文还不错,请给予我一个赞或者将其转发给你的好友,一句话,优化是一个实践总结的过程,是一个多解决方案累积的效果,一种方式并不能够起到多少优化的效果。