分享几个优化 WordPress 访问速度的实用技巧

本文由浅入深的教大家一步一步的优化 WordPress ,认真跟着本文的教程操作可以极大的提升 WordPress 运行速度,那么我们还等什么?马上开始吧!

前言

虽然有很多介绍 WordPress 缓存插件的,我也介绍过用 Redis 来缓存 WordPress 生成的页面,这也不失为一个较便捷的优化方法。但是很多时候我们会使用动态的元素,比如手机端和桌面端分发不同的图片,如果直接使用前端缓存插件会导致这些元素失去原有的效果。

Apache 因为可以把 PHP 作为自己的一个模块,所以在大并发的时候理论上效率要比 Nginx 之类的使用 FastCGI 方式的效率高一点,而且不容易出现 502 错误。不过我个人觉得这种差异非常小,而且 PHP + Nginx 也是非常常见的搭配方式,所以这里不讨论。

步骤

1、优化 WordPress 主题中引用的外部资源

很多人使用了外国主题,里面调用了许多国内无法访问或者访问很慢的资源,比如 Google fonts(谷歌字体),或者直接引用的国外 CDN 服务器上的 js 文件,都可能导致网站加载速度过慢。在 Chrome 浏览器中按 F12 打开 Developer Tools ,选择其中的 Network 面板就可以看到加载过慢的元素,你可以下载这些文件到自己的服务器中,然后通过跨文件搜索工具搜索引用这些元素的文件并将他们的 URL 链接修改为自己网站的链接或国内 CDN 服务器上的链接。

也可以通过安装 WP-China-Yes 插件 自动将主题中调用的 Google fonts(谷歌字体)替换成国内的加速地址。WP-China-Yes 插件的下载地址详细介绍以及安装方法可以参考下面的文章。

WordPress 后台无法升级更新?不如试试 WP-China-Yes 插件一键加速升级!

2、优化 Nginx 配置

如果你的 WordPress 启用了 HTTPS ,那请直接开启 HTTP2 ,可以极大的提高网页加载速度。

listen 443 ssl http2 fastopen=3 reuseport;
  • HTTP2 的详细介绍这里就不多讲了,我只说一条,HTTP2 可以多路同时发送数据,网页中包含的很多静态文件如果在没开启 HTTP2 的网站上是逐个文件发送的,如果启用了 HTTP2 可以同时加载多个,详情可参考 https://www.jianshu.com/p/67c541a421f9
  • fastopen 是 Linux 内核的特性,客户端和服务端均为 Linux 内核时才有作用,可加快TCP握手速度。reuseport 为 Nginx 1.9.1 的新特性套接字端口共享,详情可参考 https://www.nginx.com/blog/socket-sharding-nginx-release-1-9-1/

使用 keepalive 并设定一个过期时间,单位为秒,在时间内浏览器和服务器会保持连接,有新的请求响应会更迅速。

keepalive_timeout 70;

对于https,可以设置ssl会话过期时间。

ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;

对于一些静态化的资源,比如图片文件 js 与 css 文件,可以通过设置缓存过期时间,告诉浏览器在规定时间内不需要再次请求这些资源以加快访问速度(d为天,h为小时)。

    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|webp)$
    {
        expires      30d;
        error_log off;
        access_log /dev/null;
    }
    
    location ~ .*\.(js|css)?$
    {
        expires      12h;
        error_log off;
        access_log /dev/null; 
    }

大多数 Nginx 配置中都已经启用 Gzip 来压缩网页内容,你也可以使用谷歌开发的 Brotli 来提高压缩率,需要在 Nginx 编译时引入。

#下载Brotli的Nginx模块
dnf install git -y
cd /www/server
git clone https://github.com/google/ngx_brotli.git
cd ngx_brotli
git submodule update --init

#在Nginx编译时设定参数
--add-module=/www/server/ngx_brotli

#在Nginx的主配置http块中开启Brotli
brotli             on;
brotli_comp_level  6;
brotli_types       text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript image/svg+xml;

3、优化 PHP 配置

PHP 对 WordPress 性能的影响非常大,建议使用 7.0 以及更新的版本,我目前在使用 PHP7.1 。PHP 的几个大版本性能差异可以看网上的很多测评,大致上 7.x 版本会比 5.x 版本提高一倍左右的性能。
PHP 另外一个需要注意的点是要开启 OPcache ,OPcache 通过将 PHP 脚本预编译的字节码存储到共享内存中来提升 PHP 的性能, 存储预编译字节码的好处就是 省去了每次加载和解析 PHP 脚本的开销。
PHP 5.5.0 及以后的版本只要未在编译时禁用默认扩展,OPcache 均已附带在 PHP 中,只需要在 PHP 配置文件 PHP.ini 中启用

  • Linux 加载 zend_extension=opcache.so 即可
  • Windows 加载 zend_extension=php_opcache.dll 即可
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.max_wasted_percentage=5
opcache.validate_timestamps=60 (你对代码的改动将会在此秒数后生效)
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.file_cache=/tmp (让Opcache把opcode缓存缓存到外部文件中)

同时可以为 OPcache 启用大页内存,使用命令 sudo sysctl vm.nr_hugepages=512 分配,PHP.ini 中加入

opcache.huge_code_pages=1

对于使用 IIS 的用户,可以使用 WinCache扩展 ,下载后将其释放到 PHP 目录下的 ext 文件夹中,在 PHP.ini 中加载

extension=php_wincache.dll
wincache.fcenabled=1
wincache.ocenabled=1

4、优化 WordPress 后端缓存

WordPress 的后端缓存有例如使用 Memcached 和 Redis 的,不过无一例外,都需要使用 TCP 进行通讯,而使用 PHP 的扩展 APCu 进行后端缓存则可以绕过这一瓶颈。
在 PHP.ini 中添加

extension=apcu.so
apc.enabled=1
apc.enable_cli=1

在 WordPress 中安装 WP LCache插件 并启用,在 WordPress 网站目录下的 wp-content 中新建一个文件 object-cache.php ,在其中填入

<?php
$lcache_path = dirname( realpath( __FILE__ ) ) . '/plugins/wp-lcache/object-cache.php';
require_once( $lcache_path );

保存即可生效,然后访问 WordPress 看看响应速度是不是变的更快了?

后语

对应很多使用宝塔面板搭建网站环境的同学来说,其实上面说的很多配置宝塔面板已经自动添加了,但是 Brotli 模块还是需要自己来编译到 Nginx 当中的,当然跟着我上面的步骤操作一点也不难。

给TA打赏
共{{data.count}}人
人已打赏
WordPress教程

修改 WordPress 后台左上角『查看站点』从新窗口打开

2020-9-7 12:42:04

WordPress教程

WordPress 最佳 robots.txt 规则

2020-9-28 21:32:58

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索