WordPress速度优化最后一招,用Opcache实现前后端全站加速

文章中心8个月前发布 admin
68 0 0

WordPress速度优化的最后手段,使用Opcache加速初始和全站加速

WordPress的访问速度无疑是困扰现代WordPress网站管理员的最大问题之一。如果你用过其他的建站系统,比如ThinkPHP、Dreamweaver等国产CMS,你会发现即使你安装了最纯粹的WP,也没有插件,没有发表的文章内容,访问的速度也没有和家庭系统一样好。

WordPress速度优化最后一招,用Opcache实现前后端全站加速

加速wordpress

这个问题困扰了我们团队很长时间。随着我们对WordPress了解的深入,我们会发现一些技巧,比如它的加载钩子机制、插件挂载机制、数据库表结构等,都是被过度设计的。灵活的。,这对于低代码网站建设者来说是理想的选择,但也会损失很多性能。

关于优化WordPress访问速度的教程太多了,但大多数都集中在常见的方法上,例如删除Google字体、安装缓存插件、优化数据库以及压缩图像和静态脚本文件。

最有效的其实就是安装缓存插件,设置好之后,家庭桌面的访问速度会得到很大的提升,但是这种方案的限制性也很大——只适合缓存页面静态,非常适合企业展示网站;而对于一些需要动态渲染的网站,比如无忧快建在线课堂等会员制网站,页面要根据用户是否登录来显示不同的内容,因此可以简单地通过插件缓存来加速;例如,WordPress引擎也使用动态渲染。其实,通过插件缓存是无法实现加速的。

关于动态生成页面的加速,我们之前其实得总结一些有用的信息:10年经验的最终盘点,WordPress后端访问慢的问题已经彻底解决;

以上指令可以解决一些问题,但我们在开发无忧在线课堂系统时,引入了构建可视化自助网站的理念,并增加了课程收费、付费会员等功能。一切都是按照WP来开发的,虽然应该做的优化都做了,但是可能因为功能太大,访问速度一直都不尽如人意。

因此,我们探索了一种新的优化方式,使用PHP的Opcache扩展,操作非常简单,提速效果明显。

WordPress速度优化最后一招,用Opcache实现前后端全站加速

OP缓存

查看没有Opcache优化的访问速度测试:

WordPress速度优化最后一招,用Opcache实现前后端全站加速

访问速度测试

我使用的是Edge浏览器的网速测试工具。

这是经过一系列正常改进后的速度。服务器配置为阿里云实例2核CPU/4G内存/5M带宽C5。打开整个网站需要2.52秒。您可以感觉到明显的减速。如果按照上次的访问速度,这肯定是不行的;

从截图数据可以看到,发送请求花了0.1毫秒,速度非常快。下载内容花了39.02毫秒,速度也很快。时间最长的是“等待(TTFB)”,花了2.47秒。部分发生在服务器收到请求之后、内容开始下载之前,即服务器处理用户的请求以及发回生成的内容所花费的时间。包括代码逻辑实现、数据库查询、文件读取等步骤。其实我们对数据库部分进行了优化,而文件读取取决于磁盘IO性能,当网站访问量较小时,不应该是一个块,所以唯一的可能是代码执行阶段出现问题。

现在我们来看看今天的主角,Opcache。

Opcache是??PHP官方出品的性能优化扩展,从PHP5.5开始需要这个扩展,但默认不启用。

Opcache的工作原理

关于它的工作原理,这里简单介绍一下,感兴趣的朋友可以看一下,不感兴趣的可以直接跳过,看看如何配置和使用。

要了解Opcache的原理,我们首先要从PHP语言如何处理http请求开始。总共有四个阶段:

收到请求后,启动Zend引擎并加载注册的扩展模块;

初始化后,读取脚本文件,Zend引擎对脚本文件进行词法分析、语法分析,生成语法树;

Zend引擎编译语法树并生成操作码;

Zend引擎执行一个操作码并返回执行结果;

Zend可以认为是一台运行PHP语言的机器,在收到用户请求后,首先要启动机器,然后对PHP语言编写的代码进行处理,生成计算机可以理解的代码,最后执行代码。得到结果。

每次用户发送请求时都必须完成上述过程(php-fpm表单不会重复步骤1)服务器每天要处理的请求数量非常大,所以这个过程消耗了上面很多性能。事实上,对于已经上线的网站来说,源代码很少改动,所以没必要每次都执行步骤1、2、3。Opcache用于缓存步骤1/2/3。

如何使用Opcache

以宝塔面板为例:

进入在软件商店中找到您使用的PHP版本,我们使用的是PHP7.4。点击设置,如下图:

WordPress速度优化最后一招,用Opcache实现前后端全站加速

PHP设置

找到Opcache并点击安装

WordPress速度优化最后一招,用Opcache实现前后端全站加速

安装PHP扩展

安装成功后,Opcache会自动激活,但宝塔面板默认设置可能存在问题,需要检查配置:

进入PHP配置修改,看下面部分代码:

WordPress速度优化最后一招,用Opcache实现前后端全站加速

操作缓存设置

重点关注这些行:

opcache.内存消耗

指的是Opcache的可用内存量,单位是MB,根据你的服务器内存来决定。一般设置为内存的1/4,我们内存是4G,所以设置为512;

opcache.maxacceleratedfiles

指的是PHP可以缓存的最大文件数,这取决于你的代码大小,一般来说100,000-200,000就够了;

opcache.validatetimestamps

指的是缓存过期时间,必须设置为0,表示禁用,否则一遍遍生成缓存会出现很多问题;

完整配置如下:

opcache.enable1

opcache.内存消耗512

opcache.internetstringsbuffer32

opcache.maxacceleratedfiles80000

opcache.revalidatefreq3

opcache.fastshutdown1

opcache.enablecli1

opcache.validatetimestamps0

查看加速效果:

需要注意的是,由于需要生成缓存,第一次访问速度不会更快,所以测试第二次访问速度。

我们以无忧网课系统为例:

WordPress速度优化最后一招,用Opcache实现前后端全站加速

优化后速度测试

可以看到TTFB时间下降到了668毫秒,整体访问速度也在1秒以下,基本达到了秒级开启效果。

使用Opcache的注意事项

Opcache看起来很漂亮,但它也有一些缺点:

Opcache生成的缓存是驻留在内存中的。如果网站代码很大,就会占用大量内存。因此,如果服务器内存太低,不建议使用;

每次更新代码时,必须手动刷新缓存,否则新代码不会生效,可以在宝塔中重启PHP即可生效;

正式线上环境中必须关闭opcache.validatetimestamps选项,否则Opcache会不断检查代码是否更新并生成新的缓存,这也会消耗额外的服务器性能并导致其他莫名其妙的问题;

其实这个方法适用于任何PHP语言开发的网站,如果你的网站经过不同的方式优化后,速度仍然不是很好,不妨尝试一下这个方案。

© 版权声明

相关文章