个人优化WordPress速度的方法分享:前端国内免费Cdn加速Js/Css文件,后端数据库缓存

[复制链接]
老黑酱 发表于 2020-10-2 20:20:02 | 显示全部楼层 |阅读模式
简单说下,个人优化WordPress速度的方法:

前端方面通过分离css/js文件,然后把这些文件通过jsdelivr来加载。后端用redis/memcached来缓存数据库查询。
同时wp后台缓存网页内容。
那么现在的效果怎样,加载速度由之前的6-10S到现在2S左右吧
并发由之前的17ce直接挂到现在17ce能坚挺了.......

有人说直接把jsdelivr当成CDN用,全站用,但个人觉得jsdelivr内容起码要1天更新......全站走的话会导致更新不及时

还有的方法就是套CF或者用Nginx自带的缓存fastcgi_cache

WordPress是一个以PHP和MySQL为平台的自由开源的博客软件和内容管理系统。WordPress具有插件架构和模板系统。截至2018年4月,排名前1000万的网站中超过30.6%使用WordPress。WordPress是最受欢迎的网站内容管理系统。全球有大约30%的网站(7亿5000个)都是使用WordPress架设网站的。WordPress是目前因特网上最流行的博客系统。WordPress在最著名的网络发布阶段中脱颖而出。如今,它被使用在超过7000万个站点上。

虽然wordpress很优秀,但是当正式使用这个CMS以后,却发现很吃资源,明明博客没有多少内容,但是只要访问量一大以后,就导致WordPress打开巨慢,同时主机的使用率非常高。

这里就分享一些博主优化WordPress的方法。

·分离WordPress的CSS/JS文件

由于WordPress主要是基于PHP,同时又有大量的css/js文件需要加载。每次打开的时候都需要实时生成需要显示的网页内容,所以会比较吃主机资源。

这里博主推荐一款WordPress插件:commonWP

该插件将WordPress与大部分安装插件所需要的css/js文件通过jsdelivr分发。

jsdelivr目前国内是走网宿的CDN节点,国外走的CloudFlare的节点。加速效果非常明显。强烈建议该插件必备!!

直接WordPress后台插件安装界面搜索commonWP安装其他用即可,不用其他设定。

启用该插件以后,你可能会发现大部分的css/js文件都通过了jsdelivr分发,但是仍然还是有部分文件没有走jsdelivr。

那么这种情况下就需要你手动修改没有走jsdelivr相关的主题/插件文件了。

不建议没有动手能力的站长修改!

博主这里简单说下如何修改,又如何通过jsdelivr分发。

1、修改主题或者插件引用的css/js文件地址

首先你需要确定你要分发的内容是那个插件所需要使用的css/js文件,然后在主机上找到该插件的文件,通过分析源码,找到加载该css/js文件的内容,修改引用链接。修改后的链接后面会说如何获取。

例如本站有使用auto-highslide,该插件就不会自动被commonWP修改成jsdelivr的地址,那么通过分析该插件的文件,找到是通过auto-highslide.php加载的相关css/js文件。

在auto-highslide.php文件里面,发现

  1. <link rel="stylesheet" href="'.get_bloginfo('wpurl').'/wp-content/plugins/auto-highslide/highslide/highslide.css" type="text/css" />
  2. <script type="text/javascript" src="'.get_bloginfo('wpurl').'/wp-content/plugins/auto-highslide/highslide/highslide-with-html.packed.js"></script>
  3. <script type="text/javascript">
复制代码


那么需要修改的就是

  1. href="'.get_bloginfo('wpurl').'/wp-content/plugins/auto-highslide/highslide/highslide.css"
复制代码

  1. src="'.get_bloginfo('wpurl').'/wp-content/plugins/auto-highslide/highslide/highslide-with-html.packed.js"
复制代码


修改成

  1. href="https://cdn.jsdelivr.net/gh/Loukky/wpcdn@40028ba1e2ff8193194f9c1474d81ed5d26c52eb/themes/highslide.css"
复制代码

  1. src="https://cdn.jsdelivr.net/gh/Loukky/wpcdn@249a403710b0739bf5173cd9d7afeefd04b12eb0/themes/highslide-with-html.packed.js"
复制代码


即完整代码如下

  1. <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/Loukky/wpcdn@40028ba1e2ff8193194f9c1474d81ed5d26c52eb/themes/highslide.css" type="text/css" />
  2. <script type="text/javascript" src="https://cdn.jsdelivr.net/gh/Loukky/wpcdn@249a403710b0739bf5173cd9d7afeefd04b12eb0/themes/highslide-with-html.packed.js"></script>
  3. <script type="text/javascript">
复制代码


其他的插件与主题修改方法与之类似,另外WP自带的函数是通过 wp_enqueue_style和wp_enqueue_scripts加载CSS和JS文件的,如果是修改主题的话,注意这两个函数。

2、手动通过jsdelivr分发文件

该方法需要通过github来操作,在GitHub上面新建一个仓库,注意仓库设置成public。上传你需要分发的内容,然后通过jsdelivr来分发,具体操作这里不多说。

jsdelivr分发github文件的规则这里说下。

https://cdn.jsdelivr.net/gh/GitHub用户名/仓库名/文件.后缀

注意GitHub区分大小写,其他仓库名后面可以通过@来指定具体的某个release版本或者修订版本。

·缓存数据库

一般现在用得较多的数据库缓存是memcached和redis,博主使用的是redis,以redis为例,由于博主是通过宝塔安装的php,所以这里也以宝塔为例。

在宝塔的php管理界面,找到安装扩展,里面有个redis,通过该路径来安装redis,然后wp后台安装上redis相关的插件。博主这里使用的是Redis Object Cache

安装好以后就启用插件,简单设置下就可以了。

(可选)然后在宝塔管理界面,选择mysql管理界面。里面有个性能调整。根据你的实际使用情况调整相关参数。



通过上面设置与调整过后,那么现在你的WordPress应该是可以明显感觉到速度提升了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?加入我们

x
回复

使用道具 举报

 楼主| 老黑酱 发表于 2020-10-2 20:33:11 | 显示全部楼层
分享一些其他朋友的建议:

litespeed + lscache,lscache需要搭配Openlitespeed(免费)或者Litespeed(2G RAM以下免费)使用

还有wprocket插件解决

wsp+dd+re秒开
回复 支持 反对

使用道具 举报

 楼主| 老黑酱 发表于 2020-10-2 20:45:26 | 显示全部楼层
WP负载均衡解决方案

找一家支持云vps/服务器,并支持私有网络的idc。

服务器集群所需应用

Nginx
Varnish
Apache
redis
mysql


把应用各自装到一台服务器,使用私有网络IP进行通信

Apache 多服务器数据同步问题
sersync + rsync

WP集群所需的session插件
https://github.com/ethitter/WP-Redis-User-Session-Storage

Varnish VCL 配置DEMO
https://gist.github.com/matthewjackowski/062be03b41a68edbadfc

大佬们主要关注是mysql层面压力,切入点:如何有效减少对mysql的连接?

购买大内存的VPS/服务器安装Varnish, 通过Varnish缓存前端页面,直接绕过apache的访问以减轻apache/mysql的压力。
Varnish缓存的页面存储在内存当中,IO能力最高等级,可直接秒杀SSD里的静态HTML页面。

问题来了,流量到达一个什么样的级数才会需要用到这样的负载均衡方案。不一定到很大的量级,服务器上到一定配置就可以拆分了。达到一定访问量,我一般用的小型vps拆分,如果量继续增大,扩展vps/升级还是很方便的,这样布置除了缓存加速,还节省硬件开销。

MySQL 比较标准的做法读写分离,优化sql 命令,其实如今硬件这么便宜,直接堆硬件也可以考虑。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入我们

本版积分规则 返回列表 发新帖

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

快速回复 返回顶部 返回列表