首先一个项目的优化要从首页、数据库、等方面进行优化
前端:
1)压缩js/css文件,压缩文件,会将文件中的所有空格去掉,并且将复杂的变量名简单化。
2)在加载js/css文件时,我们需要将公共的js/css文件加载在header头中,其他的加载在相应的body中,如果我们不这样做,就会重复的加载js/css文件,
3)应该把公共的js文件放在header头中,加载时一定要注意加载顺序,因为js文件会阻塞加载,可能会改变表的dom结构。css文件和图片加载会同步进行。
4)页面显示图片尺寸与图片真实尺寸保持一致。
5)合并页面小图标,一次性加载进来,然后进行图片定位,找出需要用到的图片
页面dom元素定位:position属性,绝对定位absolute/相对定位relative
6)合并js/css文件,合并加载
7)静态化
为什么静态化可以提高访问速度
页面静态化不需要访问数据库查询数据
页面静态化省去了代码的执行程序,直接将页面加载进来
下面介绍的是数据库的优化
数据库的优化我们可以在以下的几个方面入手
1)慢查询
使用慢查询,我们需要修改一下配置文件。
开启慢日志查询
设置你允许一条sql语句最大的查询时间
下面和大家说一下应该怎样开启慢查询
1)在mysql客户端输入命令:show variables like '%quer%'; 查看慢查询是否开启
进入以后我们需要找出两行:long_query_time,slow_query_log,前面的一个是判断时间,看看查询的时间在多长时间以上为超时,第二个是,看看慢查询是否开启。
2)开启
在my.ini配置文件的[mysqld]选项下增加:
slow_query_log=TRUE
slow_query_log_file=c:/slow_query_log.txt
long_query_time=3
3)重启Apache
2)分表
纵向分表:将操作不频繁的表分离出来
横向分表:可以按两个维度进行分表:按时间分表,按用户分表
3)索引
索引类型:复合索引,普通索引,唯一索引,主键索引,全文索引
唯一索引:可以有空值,一个表中可以有多个唯一索引
主键索引:不可以有空值,表中是唯一的。
复合索引:最左侧原则,从最左边进行筛选
4)分区
将数据存储到不同的硬盘分区中
5)读写分离【主从复制】
把读的操作和写的操作分成两个数据库来进行,一个写多个读。
写的数据库的存储引擎是innodb,支持事务,写入的操作更快,即支持表锁,也支持行锁;myisam读取的较快。
6)数据库缓存
7)设计表
8)sql语句优化
尽量不使用联查
不要将表中数据全部查询
9)分库
10)负载均衡
负载http请求,用在高并发大量访问的网站中。至少需要三台服务器。
A服务器【代理服务器】--》备用服务器(keepalived软件)
B处理请求
C处理请求
所有的请求都由A接收,并且分配,分配给其他的服务器
请求的分配方式:轮询【默认】,权重【能力大,责任就大】,ip_hash【根据ip地址来进行分配】