优化页面访问速度(一)
——综述
一、概述
优化页面访问速度,首先需要了解用户在浏览器输入url后,最终是如何看到所需的页面。在了解整个流程后,可以逐个步骤进行优化。
二、从URL到页面
大致流程如下:
1、DNS服务器解析域名,并转成IP,返回给浏览器,浏览器直接通过IP来访问。
2、根据IP,通过各种网关、路由器、交换机,最终访问到代码所在的Nginx服务器上。
3、Nginx解析URL,对于js、css、图片等静态资源,直接找到对应文件并返回;如果是php文件,由于Nginx本身不会处理php,则根据location的配置,反向代理给php-fpm,Nginx会将url、参数、header信息等都交给php-fpm。
4、php-fpm找到对应的php代码,通过词法解析(php代码转成语言片段)、语法解析(将语言片段转成有意义的表达式)、编译(将php文件转成php的zend引擎可以执行的opcode),再顺序执行opcode。
5、执行过程中,涉及对数据库、redis等的交互过程。
6、将处理结果交还给Nginx服务器,Nginx返回给浏览器,浏览器渲染后展示给用户。
三、优化方向
对于优化步骤,可以从以下几个方面来考虑,后面的文章会对每一部分进一步深入探讨,这里做简单说明。
1、前端
前端优化主要包括防盗链、合并/减少http请求、非实时性请求改成异步ajax、启用浏览器缓存、js与css文件压缩合并、CDN加速、建立独立的图片服务器等。
2、服务端
服务端优化主要包括消息队列(rabbitmq)、并发处理、减少数据库访问(redis缓存、数据库单例模式)、多进程处理等。
3、数据库
数据库优化主要包括大表拆分(横向、纵向)、读写分离(主从)、SQL语句优化、建索引、数据库字段类型优化等。
4、web服务器
Nginx层优化主要就是服务器的负载均衡(七层、四层负载均衡)。