WordPress 6.1 包含一项改进,通过缓存数据库查询将产生显着的性能提升
他们问:
“谢谢!6.0不是已经有了改进吗?
因此,我们在大型 woo-stores 上遇到了重大问题:当仅检查子类别而不是顶级(父)类别时,档案页面上的类别消失。
对带有更多上下文的注释感到好奇”
WordPress 核心提交者回应:
“我们一直在提高数据库性能。
6.0 中对术语查询缓存进行了改进。这是后查询缓存。相关但不一样。
该问题已在 6.0.1 中修复。我自己修补的。”
WordPress 数据库和查询
WordPress 将网站的各个部分存储在数据库中。
数据库包含组织成表格的站点信息。
例如,网页帖子的所有内容都存储在一个表中。
当有人访问网页时,WordPress 将“查询”数据库以在数据库中搜索并查找该网页的内容。
WordPress 为每个请求的网页对数据库进行多次查询,并为每个站点访问者执行此操作。
因此,当每分钟发生数千次时,这可能会成为服务器的沉重负载,从而导致数据库性能变慢,进而降低整个站点的速度。
使用这个新的数据库缓存功能,它不会进行数据库查询,而是首先检查它要查找的内容是否在缓存中并从那里提取信息。
这类似于下订单午餐,而不必等待午餐完成,订单接受者到达柜台下方并立即生产。
来自 WordPress 社区的回应
这一非官方公告受到热烈欢迎。
恭喜。如此巨大的影响。
– Elie Sloïm (@ElieSl) 2022 年 9 月 27 日
公平竞争,这在很多方面都是巨大的。迫不及待想试试这个。非常感谢您的辛勤工作和坚持!
——西蒙·波拉德 (@smp303) 2022 年 9 月 27 日
不错,乔尼!非常酷,您可以在这种规模上产生积极影响。
— 基思·德文 (@keithdevon) 2022 年 9 月 27 日
杰出的!总是困扰着我,您必须跳过箍以避免重复查询。
——乔恩·布朗 (@jb510) 2022 年 9 月 27 日
最后一分钟的问题得到解决
尽管热情的推文宣布此功能将在下一个 WordPress 版本中出现,但最后一刻出现的问题似乎让人怀疑此功能是否会进入下一个 WordPress 版本。
缓存项目的GitHub 票已关闭,这意味着所有的 bug 似乎都已解决,并且已经完成。
但几个小时后,同一位 WordPress 贡献者重新打开了票,因为发现了新问题。
发现的问题与持久对象缓存有关。
他们写了一个解释:
“重新打开,因为我在持久对象缓存时发现了几个问题。
问题 1 – 启用持久对象缓存时,会多次调用缓存添加。这是因为 update_post_caches 被调用。启用对象缓存时不应调用此函数。
问题 2 – 每次 WP_Query 运行时都会调用缓存集,而不仅仅是第一次。”
打开了一个新的 GitHub 拉取版本,以记录新发现的问题的修复。
确认:数据库缓存将在 WordPress 6.1 中
我通过 Twitter 上的直接消息联系了开发人员,他回答说不会有延迟。
他确认到今天还有六个星期,这些新发现的问题将得到修复,新的缓存功能将包含在 WordPress 6.1 中。
更新状态
几天后,此功能的 GitHub 拉取版本已更新,指出问题已得到解决。
评论指出:
“查询:在 WP_Query 中保存过多的缓存添加和设置。
在 [53941] 中,数据库查询缓存已添加到 WP_Query。但是,在启用了持久对象缓存的站点上,这会导致大量不必要的缓存集和添加在每个请求上运行。如果查询缓存已存在并已缓存,则未设置缓存。用 _prime_post_caches 替换 update_post_caches 的使用,以确保只有不在缓存中的帖子才会被准备好。”
然后在核心贡献者发表评论后立即指出:
- 分辨率设置为固定
- 状态从重新打开变为关闭
尚未正式宣布任何消息,但这并不罕见。每个版本都包含数百项改进,最重要的通常会在实际发布当天突出显示。
预计将提高 WordPress 性能的新功能将登陆 6.1 版,目前计划于 2022 年 11 月发布。