use*_*169 5 php arrays wordpress plugins caching
我了解 WordPress,但现在我正在开发一个相当大且高级的 WordPress 插件。
出于这个原因,我对我的数据结构投入了很多思考。
当我还是一个初学者时,我总是习惯像这样保存它(get_option(prefix_option_name))。然后我开始使用多维数组,为每个设置部分注册 1 个,现在我通常将所有插件选项保存在 1 个大的多维数组中,如下所示:plugin_options[section][option][evt.more subs here][etc]
这确实工作得很好,而且我确实喜欢这样一个事实:我可以在 init-hook 中一次性拉出所有选项($plugin_options = get_option('plugin_options)),这样我就可以在插件中“本地”使用 $options , 然而...
考虑到 WordPress 已经利用瞬态来缓存(WP Cache API) get_option 调用,哪个对性能更好?尽管我的插件有很多选项,但我猜你永远无法达到长文本类型的限制(4GB 数据或其他东西),即使我将它们全部打包在一个可序列化的多维数组中?但我想从性能的角度来看最好的事情,所以简而言之,这又是我的问题:
什么是最好的(对于一个相当大和复杂的 WordPress 插件)?
我喜欢“单一插件选项”方法,但现在我很困惑,如果数组真的很大,那么从数据库获取/更新 1 个大数组是否真的是最好的方法 - 就像在一个非常大的数组中一样大而先进的插件。
我认为 3 的问题在于,使用 1 时,您只需要在一个 db 调用中获取所有选项,而在 3 中(您将每个选项保存为自身的数据库条目),您将必须查询db 用于每个特定和单独的选项。
但哪个更好:1 个针对所有选项,1 个针对每个部分,1 个针对每个单独选项(我想我的问题最终可以缩小到这个范围:D)。可序列化的“单选项”插件选项多维数组实际上会变得太大吗?是否应该分开?
期待听到您对此的意见。干杯。:-)
我倾向于对不相关的数据选择单独的选项。在大多数情况下,这对性能并不重要,但与组合它们相比,有显着的好处。
表现
如果该选项是自动加载的(默认情况下是自动加载的),那么使用单独的选项不会导致任何额外的数据库查询。
如果您使用 Memcache,则默认情况下对象限制为 1mb,如果您的选择超出此范围,它将绕过缓存并每次都访问数据库。
其他考虑因素
我认为 Core 的设计假设是选项将被分离,所以如果你将它们组合起来,那么你必须做额外的工作来利用 Core 为你免费提供的一些有用的东西。
例如,所有这些常见做法都很容易使用单个选项来完成,但需要额外的逻辑来将组合选项减少到目标条目:
pre_update_option{$option_name}register_setting这也可能是一个“鸡蛋放在一个篮子里”的问题;如果错误或某些其他因素导致意外的数据丢失,用户可能会丢失所有内容,而不仅仅是单个数据。这在实践中很少见,但我见过这种情况发生,并且造成了非常严重的破坏性影响。人们应该有备份,但很多人没有,而且我也看到备份在实践中失败。
| 归档时间: |
|
| 查看次数: |
1705 次 |
| 最近记录: |