WordPress 终极加速系列 – 加速原理

WordPress 教程 2年前 (2017-02-08) 4

本文来自百度 WordPress 吧中神人 @zouzhuangda 所作。将 WordPress 加速层次提升至服务器,建议有一定基础的同学用心研究此文,一定会有非常大的收获!

原文地址:http://tieba.baidu.com/p/3158984356

 

优化方案介绍

整个优化方案分为3篇文章,争取写个由简入深的介绍,希望没有技术背景的站长都能看懂:

  • 第一篇介绍加速的原理(本篇也就是第一篇了)
  • 第二篇介绍加速插件 W3 Total Cache
  • 第三篇介绍 MySQL 的优化

 

一、主机选择

由于本篇是整体优化,所以必须要能配置主机 PHP 、 Nginx、MySQL 这些相关软件,所以,这篇文章是按照此类主机写的,如果您的主机不能配置这些,那么也可以看看相关原理,再自己动手想办法进行优化。

 

二、软件环境的选择

64 位 CentOS、Nginx、PHP-FPM、APC、Memcached、MySQL,这里介绍一下 Nginx、PHP-FPM、APC、Memcached 这3个是什么。

PHP-FPM 可以理解成单独的 PHP 服务器,简单的理解就是如果你使用了 PHP-FPM,那么你的 PHP 脚本就不必和 Web 服务器放置在同一个服务器上,而且支持负载均衡。一个 Nginx 可以和多个 PHP-FPM 服务器协同工作。
APC 是 PHP 缓存工具。PHP 每次处理请求都会要重新编译源代码,APC 就是负责把编译好的执行文件存储再内存中,下次调用的时候就不必再重新编译了,极大提高了访问速度。
Memcache 也是一个内存工具,它的主要作用是将一些静态化的内容存储再内存里面,这样当下次用户访问时,不必读取硬盘,访问速度自然大大加快。Memcache 可以用来存储 Session。具体安装方法请看:VPS安装Memcached对象缓存 为WordPress再提速!

 

三、WordPress 缓存插件的选择

我选的是臭名昭著的W3 Total Cache,此插件配置麻烦,效率也不是最高的,我选它的原因就和它的名字一样,集合了所有的功能。强烈建议安装此插件之前先百度找出卸载它的办法,还有,晚上没人的时候进行配置,出问题了还有时间补救。

 

四、加速原理 

1、利用 APC 缓存 PHP 文件,这一步即可极大提高网站响应速度,尤其是后台,几乎是秒开。安装好 APC 以后,打开  /etc/php.d/apc 

 这里重点说一下, apc.stat=0ff  这个参数,此行关闭了文件更改检查,如果不关闭,那么每次 PHP 都会检查文件是否有更改,降低运行速度。关闭以后提高速度,但是如果 PHP 文件被更改了,那么是不会有效的(HTML 和 JS 文件不受影响)。所以如果对 PHP 进行更改时需要把此项设为on。

APC 有管理工具页面,可以至官网下载一个名为 apc.php  的文件,放到服务器上就可以查看 APC 运行状态了。

 

2、利用 Memcached 缓存静态化页面

存入内存,比读取硬盘要快很多,用户访问量越大,速度提升越明显。在 VPS安装Memcached对象缓存 为WordPress再提速! 配置完成后,W3 Totle Cache 插件中 Memcache 由灰色变成可选状态。可以将 Page cache method 、Minify cache method、Database cache method、Object cache method 这些全部设成 Memcached。从此,绝大部分请求就会直接重内存返回数据,服务器硬盘可以专心应付 MySQL 了。
Memcached 也有专门的管理页面可以下载,详情不再赘述。打开 PHP-FPM 的配置文件 /etc/php-fpm.d/www.conf ,最后几行应该是这样的:

 

3、去除谷歌字体:Auto Replace Google’s URL – 轻松替换前后台国外字体 为网站大幅提速

 

4、合理配置 PHP-FPM ,极大提高 PHP 运行速度。

打开  /etc/php-fpm.d/www.conf ,配置39 和 41行用户名和组为 nginx 。其中必须关闭156行:

 这是个 BUG ,记录慢日志的话 PHP 必然会内存溢出导致所有 PHP 全部报错。将这行前面打个冒号注释掉就可以了。

 

5、合理配置 MySQL

MySQL 的配置原理复杂,但是总体思路就是减少硬盘读取,合理利用内存的缓存。单独开一篇,第三篇讲。

MySQL 优化这里可以先提供一个插件,作用是删除 Post 的历史版本,几乎可以削减 Post 表 2/3 的容量,那些post累计到几万的站应该是必备此神插件:WP-Optimize。此插件除了可以删除帖子的版本,还可以优化数据表,这点也很有用。

 

6、Nginx 配置必杀技。

Nginx 作为web服务器,是网站软件环境的主题,为什么放在最后才讲呢?众所周知,我们的主机是虚拟机,在一个 8 核或者 16 核的机器上,随机给你分配的cpu,你你买的4核,那么就只会分配4个cpu给你使用。如果这台物理机有10个站在用,实际的cpu使用是未知的,但是有一个规律是不变的,第一个核使用是最频繁,占用率最高。原因就是很多软件默认都使用第一个核。

可爱的nginx有cpu进程分配功能。你可以反过来分配,让nginx默认使用其他核,这样就避开了同主机其他用户的冲突。

具体操作如下:

CPU 内核编号:

8位2进制表示
0:00000001
1:00000010
2:00000011
3:00000100
4:00000101
5:00000110
6:00000111
7:00001000

如果分配了0和6号核,那么就应该这样填写: worker_cpu_affinity 00000111 00000001;  

将6号核放前面,避开1号核的负载,直接使用比较空闲的6号核。如果你的机器超过8核,那么最多绑定8核也够了,Nginx 官方不推荐超过8核来分配进程。