我应该在我的插件中使用wp_cache来让它更快吗?

时间:2020-02-10 作者:Víctor Noir

作为一名插件开发人员,我致力于编写占用尽可能少的服务器资源的插件。这就是为什么我想避免重复对在同一请求上运行的数据库的查询(非持久性)。

假设我的插件有一个函数/类,需要从选项表中检索设置(使用get_option WP核心功能)。而且我知道,稍后将运行的另一个函数/类将需要相同的值(在相同的请求/页面加载中)。

我的问题是,什么更高效、更快:

A) 将值存储在PHP常量中B)将值存储在PHP全局变量中C)在调用函数之间传递值D)使用WP_Cache (第一次检索时缓存它,然后在查询数据库之前检查缓存值是否存在)
E)什么都不做,停止思考。没有真正的改善。

好吧,如果不是一个值,而是多个值,就像一个数据数组,会怎么样?合适的答案还是一样的吗?如果我将设置存储在多个键中,并且我希望首先检索所有设置以存储它们,并且避免在代码运行时查询/执行get\\u选项函数,该怎么办?

1 个回复
最合适的回答,由SO网友:kero 整理而成

如果您检查source code for get_option, 您将看到它已经使用wp_cache_get()wp_cache_add() 在引擎盖下。因此,在不深入研究实现的情况下,我假设get_option(\'foo\'); 只会触发一个db调用(并缓存结果)。

因此,在这种情况下E)将适用:已经为这些调用实现了缓存。

然而,从更一般的角度来看

始终使用核心缓存机制(例如。WP_Object_Cache 而不是一些自定义实现)您可以将其存储在某个PHP常量/全局中,这是真的(它可能在常规环境中的行为)。但现在我,一个专业用户,来了,想连接memcached/Redis。现有的实现现在应该将对象缓存放在redis中,并为我处理所有事情。如果我实现了自己的缓存系统,我需要自己扩展它才能让它正常工作。

始终检查WP core的工作方式,并尝试以类似的方式工作。

根据我个人的经验,影响绩效的最大因素之一是WP_Query. 因此,如果符合您的情况,请缓存这些结果,并尝试使查询更快。(查询更少的字段、不自动填充对象、关闭一些查询缓存/分页等)

相关推荐

创建自定义元框在WordPress中抛出PHP警告错误

我试图在我的WordPress测试网站中创建一个元框作为插件。我正在使用Udemy的一个教程中安装的自定义主题,该教程名为“WooCommerce&;WordPress电子商务开发”;“店面”。我已经复制了父主题,并按照教程说明创建了子主题。我没有按照教程中的指导实现“高级自定义字段”插件,而是决定创建自己的自定义插件来创建元框。我在wp内容/插件中添加了一个文件夹(简单主页字段),插件文件作为简单主页字段。php我已激活插件,并具有以下代码:function add_homepage_meta_b