有一种很常见的情况是在一个旧的和大型的WordPress网站上,自动加载的设置远远超过了必要的规模。其实就是WordPress网站在平时安装插件或者主题的后,自带了很多自动加载的表,结果每次都会加载,哪怕你删除了这个插件,这些自动加载的情况仍然出现。
原文链接:清理和优化WordPress网站数据库wp_options表和自动加载的数据 - 搬主题
你的WordPress网站可能因为查询或自动加载的数据而导致加载时间比平时长。当我们在增强数据库性能的时候,我们往往忽略了这个最重要的即清理你的wp_options和自动加载的数据。
在这篇文章中,搬主题将告诉你如何清理你的wp_options表和自动加载的数据,并显著提高你的数据库性能。毕竟自动加载的数据可能会减慢和影响你的网站性能。
下面你将了解什么是基本的wp_option表,你的网站应该包含多少数据,以及如何清理wp_options表和自动加载的数据。
什么是wp_options表
对于你的WordPress网站,wp_options数据库存储了各种数据,包括:
- 网站网址、主页网址、默认类别、管理员电子邮件、时间格式和每页文章
- 主题、小工具、插件的设置
- 暂时缓存的数据和文件等。
表中包括以下字段
WP OPTIONS表中的autoload字段是需要了解的最重要的概念。这个字段的值可以是YES或NO,带有YES的ROW将自动加载所有使用wp加载所有选项的网页上的数据,并最终拖累你的网站。
什么是自动加载的数据?
顾名思义,自动加载的数据是指在你的WordPress网站页面加载的每一页上自动加载的数据。如果wp_options数据库有大量的自动加载数据,WordPress网站可能会遇到问题。
尽管每个插件最好都在每个页面上加载它的数据,但对于开发者来说,自动加载参数默认设置为 "是"。如果wp_options数据库有大量的自动加载数据,WordPress网站可能会遇到问题。
多少数据是过量的自动加载数据?
这应该是在300KB - 1MB之间的大小。如果你达到3-5MB或更大的范围,可能有一些东西可以被优化或从自动加载中取出。而任何大于10MB的东西都需要直接处理。
导致自动加载数据的原因
一个插件或主题作者将数据加载到wp_options表中,而不是使用他们自己的表。一些开发者喜欢不创建新表的插件。然而,WP选项的设计并不是为了处理成千上万的行。
wp选项表仍然包含了已经从WordPress网站上删除的插件或主题的选项。这可能导致查询不需要的自动加载的数据。尽管自动加载的选项可能有好处,但它们也可能是有害的。一些插件在停用或从WordPress中删除时,不会清除它们的自动加载选项,而且一些插件实际上不需要所有的设置都被自动加载。
如果你有超过建议的自动加载数据,那么肯定需要清理你的wp_options表中的所有自动加载数据。此外,建议你努力减少wp_options表中的记录数量。在删除任何数据之前,请总是创建你的数据库的备份。如果你对自己这样做没有信心,我们通常建议雇用一个WordPress开发人员。
如果想直接用WordPress插件进行优化,可以参考这里【WordPress网站打开慢卡顿?数据库优化加速图文教程】
数据被一个插件自动加载,而实际上它应该被设置为 "NO"。
如何检查wp_options表中的自动加载数据
这里以CyberPanel控制面板为例,当然你也可以找到自己网站后台相应的控制面板。
- 打开你的CyberPanel仪表板
- 从右手边点击WordPress
- 选择列表WordPress
- 点击WordPress列表后,你会看到你已经部署的WordPress网站。选择你想优化数据库的网站。
- 一旦你选择了你的WordPress网站,点击数据库标签。
- 看到你的数据库名称,现在这是你选定的WordPress网站的数据库。我们将通过PHPmyadmin访问这个数据库并优化wp_options表。
看到你的数据库名称后
- 从左手边点击数据库
- 选择PHPmyadmin
- 从左手边点击你的数据库名称
- 从左侧菜单中选择wp_options
- 从顶部菜单选择SQL
- 添加以下SQL查询并点击GO
SELECT SUM(LENGTH(option_value)) as autoload_size FROM wp_options WHERE autoload='yes';
在这里你会看到你的自动加载总大小(KB),如果它超过3000KB(这意味着超过2MB),那么你就应该寻找数据库的优化。
你也可以添加一个较长的查询,按大小检查前十个条目
SELECT 'autoloaded data in KiB' as name, ROUND(SUM(LENGTH(option_value))/ 1024) as value FROM wp_options WHERE autoload='yes'
UNION
SELECT 'autoloaded data count', count(*) FROM wp_options WHERE autoload='yes'
UNION
(SELECT option_name, length(option_value) FROM wp_options WHERE autoload='yes' ORDER BY length(option_value) DESC LIMIT 10)
上面的查询结果显示了最主要的键,你可以在图片中看到。
下面是你可以用来按长度列出前10个值的SQL命令。
SELECT option_name, length(option_value) AS option_value_length FROM wp_options WHERE autoload='yes' ORDER BY option_value_length DESC LIMIT 1
你可以看到option_name rewrite_rules的长度最大,为9153,可以检查一下这个值是否可以被优化或删除。
如何清理wp_options表
像我们之前做的那样,你需要登录到PHPmyadmin。在左侧点击你的数据库,然后点击SQL标签。然后输入以下命令并点击 "Go"。
SELECT * FROM `wp_options` WHERE `autoload` = 'yes'
如果你的WordPress网站使用wp_以外的前缀,你可能需要修改上面的查询。wp选项表的整套自动加载数据将以这种方式显示给你。
在这种情况下,重新安装该插件,选择其自动清理选项,然后适当地删除它,有时可能更安全和简单。不过,我们将演示如何手动清理这些表格。
当我们滚动浏览这些行时,我们注意到网站不再使用或安装的各种插件。我们只是把它作为一个例子,但在这个例子中,我们看到了很多状态的行。在被质疑的网站上,status已经不再使用了。
使用这个命令
SELECT *
FROM `wp_options`
WHERE `autoload` = 'yes'
AND `option_name` LIKE '%status%'
- 你可以改变文件名的结尾词,例如,状态变成电子邮件来清除它。
清理暂存记录
wp_options表是WordPress保存临时记录的地方,除非你使用对象缓存。这些记录通常有一个过期日期,应该随着时间的推移而消失。不过,情况并不总是这样。在我们看到的几个数据库中,已经发现了数以千计的过时的临时记录。同样至关重要的是要记住,暂存记录并不总是自动加载的。为了确定是否有任何自动加载的暂存数据,你可以执行与下面类似的查询。
SELECT *
FROM `wp_options`
WHERE `autoload` = 'yes'
AND `option_name` LIKE '%transient%'
同样地,你可以使用删除查询来清除不再需要的暂存器。
检查网站
此外,在删除某个表的条目之前,尽量创建一个完整的数据库备份。在删除数据库内容后,在前端测试网站同样至关重要。确认你的网站运行良好,不干扰任何插件或主题的功能。根据你从wp_options表中删除的条目数量,网站实际加载的速度会有所不同。即使你应该删除几百条记录以达到清洁目的,也可能不会有太大的区别。然而,数以百万计的条目被删除将大大降低网站的加载速度。
最后总结
你的WordPress网站的加载时间可能比平时长,因为有查询或自动加载的数据。我们有不同的方法和命令来清除多余的或自动加载的数据。当你清理了你的wp_tables和自动加载的文件,你将能够增强你的数据库性能。