其实我已经在个人笔记上谈过这件事了,结果我发现写的是有点多了,正常人都没耐心读完(包括我自己,所以来写篇短的,谈谈我个人在WordPress优化上的心得。
一,解决掉Google Fonts
虽然说Google Fonts在中国已经有镜像了,但是还是会出现部分地区电信打开速度奇慢的情况,所以解决方案有两种
- 干掉Google Fonts,用插件移除Google Fonts
- 白嫖大佬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或者虚拟主机,有如下点
- 地理上距离网站目标客户近,其次就是网络对中国网络有优化
- 性能要好,超售不能太严重,限制较好
- 性价比要高
满足这三个条件,建起站来就算不优化速度也快。要是第一点满足不了怎么办,没问题,套CDN或者自建反代。
我目前在用的就是阿里云海外CDN,虽然网站用的是美国斯巴达主机,但CDN全是中国优化节点,所以网站速度并不慢。
其次就是,美国斯巴达主机性价比确实不错,性能亦尚可,我是在黑五买的,年付仅需28.8刀,一个月差不多2.6刀左右,2H1G这个价格,相对于美国VPS来说,是相当廉价的了,况且依我目前使用来看,斯巴达主机超售情况并不严重,单核性能(SysBench)稳定860分,CPU是E5 2690 V2,虽然CPU有点老,不过胜在超售少,也算是满足第二第三点了。
因此,你可以看到我博客打开速度并不慢,这应该算是其中一个原因了。
再三,学会使用WordPress插件
WordPress之所以如此受各大站长的青睐,很大一个原因就是WordPress有丰富的插件生态。
依我看,WordPress的插件生态应该是这么多博客系统中最为丰富的了,不像Typecho,什么插件也没有,什么都要自己去写,很是麻烦。
有了插件生态,就应该去用。怎么用呢?
- 安装WordPress缓存插件,将页面静态化(小站推荐WP Super Cache + Redis Object Cache,大站推荐NginxHelper + Memcached/Varnish)
- 安装各种自动静态文件压缩工具(如Autoptimize,自动把所有JS/CSS文件压缩成一个,减少TCP Connection),或者图片自动压缩工具(JPG/JPEG转WEBP)
- 安装各种对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也需要优化,网站是只有自己去琢磨,去优化,才会有提升的。
当然说了这么多,也算说了点本菜鸟的优化经验吧,每个人的优化方法都不同,此博文只提供参考。
阿里云海外CDN要不要备案,我是搬瓦工美国cn2路线VPS,套cloudflare CDN,感觉没什么用,响应速度慢