我们以一个实际的场景来整体认识一下从前端到后端的性能优化。
场景:
一个Web前端的请求发出之后,需要等待比较长的时间,才能得到完整的响应。针对这种情况,我们需要怎么考虑呢?三个方面:Web前端层面,应用服务器层面和存储层面。下面我们来简单说说。
一、Web前端性能优化
1.优化浏览器的访问,主要包括:减少HTTP的请求数,像各种css、js和图片能合并就合并;使用浏览器缓存;压缩页面等。
2.使用CDN加速,缓存各种静态资源。
3.使用反向代理。
二、应用服务器性能优化
1.优化我们的代码,改善设计等。
2.使用分布式缓存,将那些读写比很高并且很少变化的数据存储到内存中(如:使用redis,读写速度比较快,用于存储静态资源)。
3.如果对实时性没有要求,尽可能使用异步操作,可使用消息队列(如:RabbitMQ、RocketMQ等)实现。
4.使用集群,将并发请求分发到多个机器上。
三、存储性能优化
1.数据库方面可以考虑读写分离、分库分表等;另一方面,创建一些合适的索引(数据库索引就是数据库的数据结构!进一步说则是该数据结构中存储了一张表中某一列的所有值,也就是说索引是基于数据表中的某一列创建的。总而言之:一个索引是由表中某一列上的数据组成,并且这些数据存储在某个数据结构中。我们要查找所有名字为“Jesus”的员工,所以当我们发现了一条名字是“Jesus”的记录后,并不能停止继续查找,因为可能有其他员工也叫“Jesus”。这就意味着,对于表中的几万条记录,数据库每一条都要检查。这就是所谓的“全表扫描”( full table scan))。如何创建数据库索引。可以基于Employee表的两列创建索引即可:
2.复杂查询用搜索引擎(如:ElasticSearch等)实现。
3.使用分布式存储等。