高级自定义字段在管理屏幕上很慢

Posted

技术标签:

【中文标题】高级自定义字段在管理屏幕上很慢【英文标题】:Advanced Custom Fields is slow on admin screens 【发布时间】:2016-12-02 14:45:59 【问题描述】:

我正在使用 ACF 在我的页面中设置一系列插槽。所以管理屏幕包含一系列灵活的字段,每个字段都可以是以下之一:

发布 类别 标签

在前端工作得很好。我可以拖放,从数据库中选择帖子/类别/标签等,并且通常玩得很开心。

不幸的是,当尝试向后端页面添加新插槽或加载它时,添加新行所花费的时间正在扼杀它。我那里只有几行,但已经花费了令人无法接受的时间;我很确定当我再添加几个时,我们会开始出现超时。

我能找到的关于这个问题的唯一信息是 ACF 论坛上的这个支持线程 (https://support.advancedcustomfields.com/forums/topic/slow-backend-v-2-5-7/),它基本上说:

是的,如果你有一个大数据库并尝试使用灵活的字段,它会做到这一点。

我也在使用 ACF-JSON,但效果不明显。

有没有其他人遇到过这个问题?你做了什么来解决它?还是不得不放弃?

(理想情况下,我的解决方案会保留灵活的字段,因为它们正是客户在这种情况下想要的 - 但如果有另一种解决方案可以让他们在线性时间内编辑后端,我也对此感兴趣。 )

【问题讨论】:

【参考方案1】:

这是由于 ACF 加载其转发器字段和灵活字段的方式。灵活字段中的所有布局都加载到 dom 中并隐藏,并且绝对大量的 javascript 逻辑应用于所有布局。当您单击以添加新的“插槽”时,它会运行隐藏布局的克隆,并将所有必要的事件处理程序附加到克隆。

如果您检查页面 DOMContentLoaded 与加载(最终渲染事件)的时间轴,DOMContentLoaded 实际上大部分时间都非常快,但加载(加载 html 后发生的所有事情)是大部分时间消耗的,和记忆。

我能做的最好的事情是为所见即所得的内容字段激活新的“延迟初始化”选项,并为选择、复选框和单选字段禁用“风格化 UI”和“AJAX”选项。

最终,最大的问题来自于在中继器/弹性域中深度嵌套的中继器/弹性域。尽可能避免嵌套它们,页面加载时间会显着减少。

【讨论】:

【参考方案2】:

如果您正在使用任何需要访问任何页面上的字段的扩展程序,例如 LastPass。禁用该扩展程序将大大加快页面速度。

【讨论】:

以上是关于高级自定义字段在管理屏幕上很慢的主要内容,如果未能解决你的问题,请参考以下文章

在最近的订单模板和管理订单上显示产品帖子类型高级自定义字段(woocommerce)

get_field() 不返回分类数据(高级自定义字段)

如何在 divi 博客模块中显示自定义字段?

WooCommerce API 的高级自定义字段

PHP 高级自定义字段

氧气 - 高级自定义字段重复器子字段 - 链接字段