高级自定义字段在管理屏幕上运行缓慢

Advanced Custom Fields is slow on admin screens

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

在前端效果很好。我可以拖放,从数据库中选择 posts/categories/tags 等,通常玩得很开心。

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

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

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

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

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

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

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

如果您检查页面 DOMContentLoaded 与加载(最终呈现事件)的时间轴,DOMContentLoaded 实际上大部分时间都非常快,但是加载(加载 html 之后发生的一切)才是最重要的最多的就是那段时间,和记忆。

我能做的最好的事情是激活所见即所得内容字段的新 "Delay Initialization" 选项,并禁用 select 的 "Stylized UI" 和 "AJAX" 选项,复选框和无线电领域。

最终,最大的问题来自 repeaters/flexfields 内部的深度嵌套 repeaters/flexifields。尽可能避免嵌套它们,页面加载时间将显着减少。

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