WordPress如何秒秒秒加载?

都说Wordpress不卡,卡的是各种插件。然而面对有着“低配服务器杀手”之称的17CE,测一遍的结果还是凄惨红一片………看到到多大佬的博客打开的速度,啧啧啧,真就秒秒秒加载。而看看自己的,哎,惨不忍睹,数据基本为0的都拼不过别人家上百万的数据加载速度……优化前

简单说明

  1. 服务器配置:阿里云轻量1C2G
  2. 环境:LNMP(基础)+Openresty(替换Nginx)+Redis+Memcached(两套缓存方案)
  3. WordPress插件:WPJAM Basic,Nginx Helper

环境搭建

基础环境搭建

需要搭建并测试好相关命令!

否则本文接下来的操作可能会出现一系列Error,详见:这篇文章

缓存拓展安装

Memcached拓展

进入lnmp主目录 ,执行:

#安装 memcached,选择 2
./addons.sh install memcached

Redis拓展

进入lnmp主目录,执行:

#安装redis
./addons.sh install redis

搭建Wordpress站点

  1. 直接使用lnmp命令lnmp vhost add 建立站点,伪静态选择wordpress,然后记得创建数据库选y(后面安装需要用到)!
  2. 站点创建完成后,进入站点根目录cd /home/wwwroot/站点根目录名 ,上传Wordpress的中文安装包到站点根目录。
  3. 同时tar -zxvf 你的安装包包名 解压安装包,再用mv wordpress/* ./ 将源文件移动到站点根目录下。
  4. 赋予站点访问权限:chown www:www -R /home/wwwroot/站点根目录名 重要!
  5. 最后直接访问你绑定的域名按提示进行安装(到填写数据库页面直接用刚刚创建站点时的数据库信息)。

修改站点配置文件

nano /usr/local/openresty/nginx/conf/vhost/站点配置文件名

最前面添加

upstream redis {
        server 127.0.0.1:6379;
        keepalive 512;
    }

伪静态下方添加

include rewrite/wordpress.conf; 下方添加:

点此查看被折叠的代码

#add--------------------------------------start
set $skip_cache 0;
#POST请求直接调用后端
if ($request_method = POST) {
    set $skip_cache 1;
}   
if ($query_string != "") {
    set $skip_cache 1;
}
#不要缓存以下部分
if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php|/feed/|index.php|sitemap(_index)?.xml") {
    set $skip_cache 1;
}   
#不缓存登陆用户和最近评论的用户
if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") {
    set $skip_cache 1;
}
location /redis-fetch {
    internal  ;
    set  $redis_key $args;
    redis_pass  redis;
}
location /redis-store {
    internal  ;
    set_unescape_uri $key $arg_key ;
    redis2_query set $key $echo_request_body;
    redis2_query expire $key 14400; 
    redis2_pass  redis;
}
#add-------------------------------------end

注释掉php

在前面添加井号,如:#include enable-php.conf; ,注释掉php配置文件,并于下方添加:

点此查看被折叠的代码

#add-------------------------------------end
location ~ [^/]\.php(/|$) {
    set $key "nginx-cache:$scheme$request_method$host$request_uri";
    try_files $uri =404;

    srcache_fetch_skip $skip_cache;
    srcache_store_skip $skip_cache;

    srcache_response_cache_control off;

    set_escape_uri $escaped_key $key;

    srcache_fetch GET /redis-fetch $key;
    srcache_store PUT /redis-store key=$escaped_key;

    more_set_headers 'X-Cache $srcache_fetch_status';
    more_set_headers 'X-Store $srcache_store_status';

    #PHP版本号有出入的别弄错了
    fastcgi_pass unix:/tmp/php-cgi.sock;
    fastcgi_index index.php;
    include fastcgi.conf;
    fastcgi_param PHP_VALUE "open_basedir=$document_root:/tmp/:/proc/";
}
#add-------------------------------------end

重载Nginx配置文件

修改完Openresty的Nginx配置文件需要重新载入

#检查配置文件有无错误
nginx -t
#重载nginx配置文件
nginx -s reload

WordPress插件安装

首先确保你的站点www用户有足够的权限(否则后续安装插件可能会提示需要填写ftp账户),执行

chown www:www -R 你的站点根路径

然后访问你的域名/admin 登录后台,左侧点击插件,出来的右侧页面左上角点安装拓展,搜索Nginx Helper和WPJAM Basic,并安装这两个插件。

Redis缓存开启(Nginx Helper)

WP后台左侧点击插件,Nginx Helper下点击Settings, 勾选

要查看命中清空,可以在服务器里输入(需要安装telnet命令)

telnet 127.0.0.1 6379
info

info回车后,往上找keyspace_hits为命中缓存,keyspace_misses为缓存未命中。

退出telnet:quit 回车

Memcached配置缓存(WPJAM Basic)

WP后台左侧点击WPJAM,点击“拓展管理”,然后微信扫码登录下,按提示输入验证码即可。

接着将object-cache.php文件复制到wp-content文件夹下。进入网站根目录,启用强化拓展,执行 

cp -r ./wp-content/plugins/wpjam-basic/template/object-cache.php ./wp-content

再次去点击WPJAM,下方选系统信息,可以看到Memcached缓存的详细信息。

最后

再去17CE测试一下吧,你会发现服务器cpu基本没在动,也不再是凄惨红一片了~
优化后

阅读剩余
THE END