利用Cachify插件将WordPress页面缓存到Memcached实现优化加速

wordpress优化加速无非在于服务器选择、缓存的应用、静态分离等步骤上下功夫,国内服务器性能瓶颈基本集中在宽带容量上面,而国外服务器瓶颈主要集中在宽带路由上面。小容量的宽带,以及超高的延迟一直制约着用户体验。在这些都已经无法改变的前提下,我们可以优化服务器来提升一定的速度。

2020081213304966.png插图

我们通常会使用到缓存,将页面缓存到硬盘当中以降低服务器负载和提升访问速度,降低用户端等待时间TTFB。如果硬盘性能不佳,而内存很大的话,我们可以采用终极加速方案,直接把内容缓存到内存当中去。这里我们讲一下利用Cachify插件将WordPress页面缓存到Memcached实现优化加速。

利用Cachify插件将WordPress页面缓存到Memcached实现优化加速

服务器配置Memcached

Cachify插件:

  1. 下载:https://wordpress.org/plugins/cachify/
  2. 开源:https://github.com/pluginkollektiv/cachify/wiki

Cachify插件支持把静态内容缓存到 WordPress 数据库,硬盘,APC(PHP 缓存)或者 Memcached 中,缓存到数据库最为简单,但是一般建议缓存到Memcached,利用服务器内存存储和读取速度才是最快的。

fill_w140_h100_g0_mark_2020081201051736.png插图(2)
fill_w140_h100_g0_mark_2020081201051736.png插图(3)

WordPress移除head头部不必要的元素标签、返回信息中的shortlink、REST API功能且移除wp-json

在我们开发WordPress主题时,细心的小伙伴或发现网站头部如果加载head页面就会出现很多系统自带的加载项

如果你的用的是Oneinstack或者LNMP一键包,或者是宝塔BT面板,直接使用脚本一键安装和配置Memcached,虚拟主机一般来说不支持Memcached,但是主流主机面板都是支持该服务的。

利用Cachify插件将WordPress页面缓存到Memcached实现优化加速

Cachify插件安装启用

到Wordpress后台直接搜索Cachify插件即可安装,启用Cachify插件后界面如下图:(点击放大)

利用Cachify插件将WordPress页面缓存到Memcached实现优化加速

调用Cachify缓存加速

数据库缓存

如果你在Cachify插件中选择了使用数据库Database作为你的页面缓存,无需其它的操作,直接保存后就可以使用了。

利用Cachify插件将WordPress页面缓存到Memcached实现优化加速

PAC缓存

如果你使用APC缓存来调用Cachify,你需要按照下面的要求修改你的.htaccess或者是Nginx配置文件:

#.htaccess example (Apache):

php_value auto_prepend_file /absolute path to/plugins/cachify/apc/proxy.php

#Example for nginx instances:
location ~ .php {
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param PHP_VALUE auto_prepend_file=/absolute path to/plugins/cachify/apc/proxy.php;
location ~ /wp-admin/ {
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param PHP_VALUE auto_prepend_file=;
}
}

硬盘缓存

如果你是想让Cachify将缓存页面放在你的硬盘上,你需要按照下面的要求来修改你的.htaccess或者是Nginx配置文件:

#A description for only https and sites that are accessible via https and http follows below.
#Extension of the .htaccess (Apache), if the website is only accessible via http: (https://gist.github.com/sergejmueller/2027249#file-htaccess)
#.htaccess extension for websites that can be reached under both http and https: (https://gist.github.com/mcguffin/31f80070d631d56da23cefb4ef1b6649)
# BEGINN CACHIFY

# ENGINE ON
RewriteEngine On
# GZIP FILE

RewriteCond %{REQUEST_URI} /$
RewriteCond %{REQUEST_URI} !^/(wp-admin|wp-content/cache)/.*
RewriteCond %{REQUEST_METHOD} !=POST
RewriteCond %{QUERY_STRING} =""
RewriteCond %{HTTP_COOKIE} !(wp-postpass|wordpress_logged_in|comment_author)_
RewriteCond %{HTTP:Accept-Encoding} gzip
RewriteCond %{DOCUMENT_ROOT}/path to/wp-content/cache/cachify/%{HTTP_HOST}%{REQUEST_URI}index.html.gz -f
RewriteRule ^(.*) /path to/wp-content/cache/cachify/%{HTTP_HOST}%{REQUEST_URI}index.html.gz [L]
AddType text/html .gz
AddEncoding gzip .gz

# HTML FILE
RewriteCond %{REQUEST_URI} /$
RewriteCond %{REQUEST_URI} !^/(wp-admin|wp-content/cache)/.*
RewriteCond %{REQUEST_METHOD} !=POST
RewriteCond %{QUERY_STRING} =""
RewriteCond %{HTTP_COOKIE} !(wp-postpass|wordpress_logged_in|comment_author)_
RewriteCond %{DOCUMENT_ROOT}/path to/wp-content/cache/cachify/%{HTTP_HOST}%{REQUEST_URI}index.html -f
RewriteRule ^(.*) /path to/wp-content/cache/cachify/%{HTTP_HOST}%{REQUEST_URI}index.html [L]

# END CACHIFY
#Nginx configuration file extension (https://gist.github.com/sergejmueller/1939164#file-gistfile1-nginxconf)
## GZIP
gzip_static on;

## CHARSET
charset utf-8;

## INDEX LOCATION
location / {
if ( $query_string ) {
return 405;
}
if ( $request_method = POST ) {
return 405;
}
if ( $request_uri ~ /wp-admin/ ) {
return 405;
}
if ( $http_cookie ~ (wp-postpass|wordpress_logged_in|comment_author)_ ) {
return 405;
}
error_page 405 = @nocache;
try_files /wp-content/cache/cachify/https-${host}${uri}index.html /wp-content/cache/cachify/${host}${uri}index.html @nocache;
}

## NOCACHE LOCATION
location @nocache {
try_files $uri $uri/ /index.php?$args;
}

## PROTECT CACHE
location ~ /wp-content/cache {
internal;
}

Memcached缓存

如果你是想要使用Memcached来缓存你的页面,你需要按照下面的要求修改你的Nginx配置文件:(该模式仅支持Nginx):

#Extension of the Nginx configuration file (https://gist.github.com/sergejmueller/6113816#file-gistfile1-txt)
#If you have errors please try to change memcached_pass localhost:11211; to memcached_pass 127.0.0.1:11211; This forces IPv4 because some servers that allow ipv4 and ipv6 are configured to bind memcached to ipv4 only.
## GZIP
gzip_static on;
## CHARSET
charset utf-8;
## INDEX LOCATION
location / {
error_page 404 405 = @nocache;

if ( $query_string ) {
return 405;
}
if ( $request_method = POST ) {
return 405;
}
if ( $request_uri ~ "/wp-" ) {
return 405;
}
if ( $http_cookie ~ (wp-postpass|wordpress_logged_in|comment_author)_ ) {
return 405;
}
default_type text/html;
add_header X-Powered-By Cachify;
set $memcached_key $host$uri;
memcached_pass localhost:11211;
}
location @nocache {
try_files $uri $uri/ /index.php?$args;
}

该配置规则仅仅是官方给出的示例,你需要根据你自己的Nginx配置情况来适当调整,这里给出Qi大佬的Nginx配置规则,仅供参考(采用Oneinstack架构):

#因oneinstack加载了Wordpress重写规则,故直接在wordpress.conf中修改
location / {
#注释掉原有的重写规则
#try_files $uri $uri/ /index.php?$args;

#启用Cachify开始
error_page 404 405 = @nocache;

if ( $query_string ) {
return 405;
}
if ( $request_method = POST ) {
return 405;
}
if ( $request_uri ~ "/wp-" ) {
return 405;
}
if ( $http_cookie ~ (wp-postpass|wordpress_logged_in|comment_author)_ ) {
return 405;
}
default_type text/html;
add_header X-Powered-By Cachify;
set $memcached_key $host$uri;
memcached_pass 127.0.0.1:11211;
#启用Cachify结束

}
#启用Cachify开始
location @nocache {
try_files $uri $uri/ /index.php?$args;
}
#启用Cachify结束
#以下为原配置规则,继续保留
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
location ~* ^/wp-content/uploads/.*\.php$ {
deny all;
}

我们还可以指定不缓存页面,例如我们可以增加对所有的移动设备用户不启用缓存,这个功能在全站使用了AMP时特别有用,规则如下:

#启用Cachify开始
charset utf-8;
#启用Cachify结束
location / {
#try_files $uri $uri/ /index.php?$args;

#启用Cachify开始
error_page 404 405 = @nocache;

if ( $query_string ) {
return 405;
}
if ( $request_method = POST ) {
return 405;
}

#移动端不缓存
if ( $http_user_agent ~ "(MIDP)|(WAP)|(UP.Browser)|(Smartphone)|(Obigo)|(Mobile)|(AU.Browser)|(wxd.Mms)|(WxdB.Browser)|(CLDC)|(UP.Link)|(KM.Browser)|(UCWEB)|(SEMC-Browser)|(Mini)|(Symbian)|(Palm)|(Nokia)|(Panasonic)|(MOT-)|(SonyEricsson)|(NEC-)|(Alcatel)|(Ericsson)|(BENQ)|(BenQ)|(Amoisonic)|(Amoi-)|(Capitel)|(PHILIPS)|(SAMSUNG)|(Lenovo)|(Mitsu)|(Motorola)|(SHARP)|(WAPPER)|(LG-)|(LG/)|(EG900)|(CECT)|(Compal)|(kejian)|(Bird)|(BIRD)|(G900/V1.0)|(Arima)|(CTL)|(TDG)|(Daxian)|(DAXIAN)|(DBTEL)|(Eastcom)|(EASTCOM)|(PANTECH)|(Dopod)|(Haier)|(HAIER)|(KONKA)|(KEJIAN)|(LENOVO)|(Soutec)|(SOUTEC)|(SAGEM)|(SEC-)|(SED-)|(EMOL-)|(INNO55)|(ZTE)|(iPhone)|(Android)|(Windows CE)|(Wget)|(Java)|(curl)|(Opera)" )
{
return 405;
}
#移动端不缓存

if ( $request_uri ~ "/wp-" ) {
return 405;
}
if ( $http_cookie ~ (wp-postpass|wordpress_logged_in|comment_author)_ ) {
return 405;
}
default_type text/html;
add_header X-Powered-By Cachify;
set $memcached_key $host$uri;
memcached_pass 127.0.0.1:11211;
#启用Cachify结束

}
#启用Cachify开始
location @nocache {
try_files $uri $uri/ /index.php?$args;
}
#启用Cachify结束
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
location ~* ^/wp-content/uploads/.*\.php$ {
deny all;
}

宝塔面板规则

将以下代码放入伪静态规则中。

#宝塔面板直接在网站的伪静态规则里修改即可。
location / {
 #注释掉原有的规则
 #try_files $uri $uri/ /index.php?$args;
  
  #启用Cachify开始
   error_page 404 405 = @nocache;
 
    if ( $query_string ) {
        return 405;
    }
    if ( $request_method = POST ) {
        return 405;
    }
    if ( $request_uri ~ "/wp-" ) {
        return 405;
    }
    if ( $http_cookie ~ (wp-postpass|wordpress_logged_in|comment_author)_ ) {
        return 405;
    }
    default_type text/html;
    add_header X-Powered-By Cachify;
    set $memcached_key $host$uri;
    memcached_pass 127.0.0.1:11211;
   #启用Cachify结束
  
}
#启用Cachify开始
location @nocache {
    try_files $uri $uri/ /index.php?$args;
}
#启用Cachify结束
#以下为原配置规则,继续保留
rewrite /wp-admin$ $scheme://$host$uri/ permanent;

Memcached缓存管理

更新缓存

Cachify插件允许你在更新一篇文章是清空所有的Memcached缓存,还是仅清空某页面的Memcached缓存。

利用Cachify插件将WordPress页面缓存到Memcached实现优化加速

手动删除

在Wordpress后台右上角可以手动一键删除Memcached缓存。

利用Cachify插件将WordPress页面缓存到Memcached实现优化加速

查看缓存

在Wordpress后台可以直接查看和更新Cachify插件缓存配置。

利用Cachify插件将WordPress页面缓存到Memcached实现优化加速

Cachify缓存加速效果

确认缓存生效

打开网页源代码,可以看到:< !-- Cachify | http://cachify.de Memcached @ 31.08.2019 01:22:51 -- >等字样,表示该页面是由Cachify缓存生成的。

利用Cachify插件将WordPress页面缓存到Memcached实现优化加速

加速效果

使用Memcached作为缓存后首页打开,浏览器的TTFB时间大大降低,从最初的790ms降低到了190ms,加速效果非常明显,与未启用Cachify Memcached缓存加速相比,时间缩短了一倍以上。

总结

为了达到Cachify插件最大化的Wordpress优化加速效果,建议使用Memcached缓存加速方式,它相对于使用数据库或者硬盘,直接在内存中写入和读取缓存,速度快了不少。

内存速度很快,什么后往里面扔速度必然很快。前提是你的服务器内存足够大。一般情况自然还是建议缓存到硬盘上面,现在服务器几乎都配备了NVME SSD硬盘,性能还是非常给力的。

人已赞赏
wordrpess

WordPress移除head头部不必要的元素标签、返回信息中的shortlink、REST API功能且移除wp-json

2020-8-12 9:10:20

wordrpess

WordPress启用WebP格式图片-Nginx转化WebP格式和自适应浏览器 WordPress webp图片格式插件WebP Express

2020-8-13 11:06:02

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