谈谈我是怎么优化WordPress的

 

其实我已经在个人笔记上谈过这件事了,结果我发现写的是有点多了,正常人都没耐心读完(包括我自己,所以来写篇短的,谈谈我个人在WordPress优化上的心得。

 

一,解决掉Google Fonts

虽然说Google Fonts在中国已经有镜像了,但是还是会出现部分地区电信打开速度奇慢的情况,所以解决方案有两种

 

  1. 干掉Google Fonts,用插件移除Google Fonts
  2. 白嫖大佬Google Fonts反代,例如Geekzu

 

但一般我会选择第二种方案,因为移除Google Fonts之后自带字体血妈丑

 

如何把google fonts换成大佬的反代呢?

一般这时候需要去编辑主题的function.php文件,里面一般会有google fonts加载地址,例如

//fonts.googleapis.com

再根据反代大佬给的提示更换成他的域名即可。

 

如果你是用比较奇葩的Wordpress主题,例如generatepress这种,就需要自己去找加载google fonts的源码。。。

 

generatepress我已经找到了,在

inc目录下的typography.php第112行

 

找这玩意特辛苦,真不知道他们隐藏Google Fonts地址为了什么,艹

 

 

其次,就是有一个好的建站VPS或者虚拟主机

 

“好的”这个词太宏观了。我给他缩小下范围。

什么是我认为”好的”VPS或者虚拟主机,有如下点

 

  1. 地理上距离网站目标客户近,其次就是网络对中国网络有优化
  2. 性能要好,超售不能太严重,限制较好
  3. 性价比要高

满足这三个条件,建起站来就算不优化速度也快。要是第一点满足不了怎么办,没问题,套CDN或者自建反代。

 

我目前在用的就是阿里云海外CDN,虽然网站用的是美国斯巴达主机,但CDN全是中国优化节点,所以网站速度并不慢。

其次就是,美国斯巴达主机性价比确实不错,性能亦尚可,我是在黑五买的,年付仅需28.8刀,一个月差不多2.6刀左右,2H1G这个价格,相对于美国VPS来说,是相当廉价的了,况且依我目前使用来看,斯巴达主机超售情况并不严重,单核性能(SysBench)稳定860分,CPU是E5 2690 V2,虽然CPU有点老,不过胜在超售少,也算是满足第二第三点了。

 

因此,你可以看到我博客打开速度并不慢,这应该算是其中一个原因了。

 

 

再三,学会使用WordPress插件

WordPress之所以如此受各大站长的青睐,很大一个原因就是WordPress有丰富的插件生态。

依我看,WordPress的插件生态应该是这么多博客系统中最为丰富的了,不像Typecho,什么插件也没有,什么都要自己去写,很是麻烦。

 

有了插件生态,就应该去用。怎么用呢?

  1. 安装WordPress缓存插件,将页面静态化(小站推荐WP Super Cache + Redis Object Cache,大站推荐NginxHelper + Memcached/Varnish)
  2. 安装各种自动静态文件压缩工具(如Autoptimize,自动把所有JS/CSS文件压缩成一个,减少TCP Connection),或者图片自动压缩工具(JPG/JPEG转WEBP)
  3. 安装各种对SEO有用的插件,例如Sitemap这种

 

1.Redis

Redis的连接方式,我个人推荐使用UNIX-Socket,因为TCP实在是慢的厉害,至于怎么配置,在下面粗略写一下

mkdir -p /var/run/redis/ 

chown -R redis:redis /var/run/redis/

再编辑redis.conf,添加如下内容

unixsocket /var/run/redis/redis.sock
unixsocketperm 777

 

然后保存即可,再重启redis-server

然后先把Redis Object Cache插件停用,找到Wordpress配置文件,wp-config.php中添加

 

define('WP_REDIS_PATH','/var/run/redis/redis.sock');
define('WP_REDIS_SCHEME','unix');

 

注意:顺序不能颠倒

再重启Redis Object Cache查看,随便访问几个页面,用redis-cli monitor查看,如果有unix://开头的GET,就说明成功了

 

 

2.WP Super Cache

建议启用专家模式,专家模式NGINX需要有额外的rewrite规则,内容如下,直接在nginx conf粘贴进去即可

 

 

# WP Super Cache rules.
# Designed to be included from a 'wordpress-ms-...' configuration file.
 
set $cache_uri $request_uri;
 
# POST requests and urls with a query string should always go to PHP
if ($request_method = POST) {
        set $cache_uri 'null cache';
}
 
if ($query_string != "") {
        set $cache_uri 'null cache';
}   
 
# Don't cache uris containing the following segments
if ($request_uri ~* "(/wp-admin/|/xmlrpc.php|/wp-(app|cron|login|register|mail).php|wp-.*.php|/feed/|index.php|wp-comments-popup.php|wp-links-opml.php|wp-locations.php|sitemap(_index)?.xml|[a-z0-9_-]+-sitemap([0-9]+)?.xml)") {
        set $cache_uri 'null cache';
}   
 
# Don't use the cache for logged in users or recent commenters
if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_logged_in") {
        set $cache_uri 'null cache';
}
 
# START MOBILE
# Mobile browsers section to server them non-cached version. COMMENTED by default as most modern wordpress themes including twenty-eleven are responsive. Uncomment config lines in this section if you want to use a plugin like WP-Touch
# if ($http_x_wap_profile) {
#        set $cache_uri 'null cache';
#}
 
#if ($http_profile) {
#        set $cache_uri 'null cache';
#}
 
#if ($http_user_agent ~* (2.0\ MMP|240x320|400X240|AvantGo|BlackBerry|Blazer|Cellphone|Danger|DoCoMo|Elaine/3.0|EudoraWeb|Googlebot-Mobile|hiptop|IEMobile|KYOCERA/WX310K|LG/U990|MIDP-2.|MMEF20|MOT-V|NetFront|Newt|Nintendo\ Wii|Nitro|Nokia|Opera\ Mini|Palm|PlayStation\ Portable|portalmmm|Proxinet|ProxiNet|SHARP-TQ-GX10|SHG-i900|Small|SonyEricsson|Symbian\ OS|SymbianOS|TS21i-10|UP.Browser|UP.Link|webOS|Windows\ CE|WinWAP|YahooSeeker/M1A1-R2D2|iPhone|iPod|Android|BlackBerry9530|LG-TU915\ Obigo|LGE\ VX|webOS|Nokia5800)) {
 #       set $cache_uri 'null cache';
#}
 
#if ($http_user_agent ~* (w3c\ |w3c-|acs-|alav|alca|amoi|audi|avan|benq|bird|blac|blaz|brew|cell|cldc|cmd-|dang|doco|eric|hipt|htc_|inno|ipaq|ipod|jigs|kddi|keji|leno|lg-c|lg-d|lg-g|lge-|lg/u|maui|maxo|midp|mits|mmef|mobi|mot-|moto|mwbp|nec-|newt|noki|palm|pana|pant|phil|play|port|prox|qwap|sage|sams|sany|sch-|sec-|send|seri|sgh-|shar|sie-|siem|smal|smar|sony|sph-|symb|t-mo|teli|tim-|tosh|tsm-|upg1|upsi|vk-v|voda|wap-|wapa|wapi|wapp|wapr|webc|winw|winw|xda\ |xda-)) {
  #      set $cache_uri 'null cache';
#}
#END MOBILE
 
# Use cached or actual file if they exists, otherwise pass request to WordPress
location / {
        try_files /wp-content/cache/supercache/$http_host/$cache_uri/index-https.html $uri $uri/ /index.php?$args ;
} 

 

然后再nginx -s reload即可

当然最后不要忘了在WP Super Cache中选择专家模式并且保存,不然就白费了。

 

3.全静态化

有些人喜欢把自己的WordPress用某些插件一键静态化,然后上传到腾讯云COS之类的东西。。

我个人并不推荐,因为这样WP强大的评论功能就废了,其次虽然这样能使WordPress抗压能力有飞跃的提升,但是这样为何不用Hexo呢?

 

最后的最后,有条件用CDN

好像这个话题在第二个重复了。

不过这是我还是要说的。因为CDN往往能为大用户访问的网站提供明显的速度提升。

CDN要看是网站目标客户是谁从而选用合适的提供商。

例如国内,例如本人的博客,全都是国内访问偏多,那肯定用国内阿里云腾讯云,当然得要备案,不备案就用阿里云国际的CDN吧,目前在用,很不错。

目标访客是国外就简单了,随随便便买个廉价的虚拟主机(性能不能太差),套个Cloudflare CDN,已经快如闪电,谁叫我大天朝网络比谁都差呢。。。

 

最后的最后的最后,数据库优化

说完软件层,也应该说说软件层依赖的数据库了。

数据库也是需要去优化的,一般要把参数调好,怎么调我这里就不给了,因为这东西是根据VPS性能或服务器性能来调的,只有自己去琢磨,才能调的最优

 

The End

作为一个不会搞也不想搞SEO的菜逼站长。虽然没学到什么东西,但优化我还是会做的,也曾帮很多大佬做过优化,效果还是很明显的。

先不谈我帮大佬们做过的优化,你看我的博客亦可以看出来了,速度是相当可以了(至少广东是这样

 

很多人说WordPress臃肿,天天嚷嚷着用Typecho,但等他们用过Typecho之后,发现插件少的一逼,发现再也无法用回WordPress了,于是天天就说,真后悔阿,还是WordPress好用。

 

WordPress无论是安全性,灵活性,实用性,方便性,都强于Typecho,但唯独有一点缺点,那就是需要去自己优化他。

就算不是WordPress,像Discuz也需要优化,网站是只有自己去琢磨,去优化,才会有提升的。

 

当然说了这么多,也算说了点本菜鸟的优化经验吧,每个人的优化方法都不同,此博文只提供参考。

 

 

 

留下评论