使用高级自定义字段时最大限度地减少页面上的查询数量 时间:2012-10-16 作者:Ollie 我目前正在一个广泛使用流行Advanced Custom Fields 插件。然而,因此页面加载时间可能非常慢,尤其是在使用Gallery插件时。有人对管理大量自定义字段的最佳做法有什么建议吗?在某些情况下,我可以有效地处理数千个变量,并且需要减少页面加载时间(某些情况下约为5秒)。我知道这是一个相当开放的问题,但如果能就如何最大限度地减少页面中的查询数量提出一些建议(比如通过直接访问数据库中的值,而不是依赖插件的API),那将是一件非常棒的事。 3 个回复 最合适的回答,由SO网友:Rarst 整理而成 性能优化并不是在真空中真正起作用的,它需要亲自分析并寻找实际的瓶颈(这往往与感知的瓶颈不同)。但一般来说,有几种方法可以满足大量数据库数据的需要:优化从数据库提取,例如通过将多个请求连接到检索单个更大的数据集。安装持久对象缓存并将数据保留在内存中,以加快周转速度。缓存生成的计算或标记片段,以减少检索它们的频率,并可能使其与实际页面加载异步。 SO网友:s_ha_dum 然而,这几乎是异端邪说,但是,如果您希望使用非常大和复杂的日期集进行非常高效的查询,“直接访问数据库中的值……而不是依赖插件的API”,这几乎肯定是可行的。我不知道具体的插件有什么问题,但坦率地说,插件往往效率非常低。WordPress本身也有相当大的缺陷,因为它自己的一些核心功能效率低下,而另一个公平的块不够灵活,无法允许各种查询/更改,从而达到我想要的效率。这反过来又迫使插件作者要么违背强烈鼓励的“使用核心功能”规则,要么使用效率较低的机制。我相信这会影响你把东西放到wordpress上的能力。组织回购。我不是真的服从回购协议,所以我对规则不是很熟悉,但我知道有规则。另一方面,“直接访问数据库中的值”意味着插件需要更多的维护,因为您将跟踪WordPress数据库结构的变化。 SO网友:Maija Vilkina 如果不了解您的具体情况,就很难提出任何具体的建议,但每当我被一个毫无理由的网站拖得太慢时,我都会安装查询监视器插件(https://wordpress.org/plugins/query-monitor/) 仔细看看它说了什么。我广泛使用高级自定义字段,通常情况下,错误不在于插件本身,而在于以下事项之一:复杂的get_posts 或WP_Query 具有多个和/或嵌套的查询\'tax_query\' 和\'meta_query\' 参数。在最近添加的阵列中嵌套多个阵列的能力实际上没有帮助。根本没有加载大图像而不需要它。加载图像字段时,ACF返回一个数组,该数组既包含全尺寸图像的url,也包含一个数组,其中包含该图像的每个大小调整版本的url。您应该尽可能多地使用调整大小的版本以节省带宽。如果您绝对必须使用大而明亮的高分辨率图像,请考虑实现异步图像加载。惰性负载(https://wordpress.org/plugins/lazy-load/) 是一个很好的插件,或者您可以编写自己的ajax调用糟糕的托管。这是没有办法的——你不能在每月1美元的共享主机上运行Wordpress,而期望它的性能。这是行不通的如果你要在页面上输出很多元素(一长串的图像/帖子),你也可以考虑显式分页或将列表切分并加载,比如说,先加载10个元素,然后再添加下10个元素,等等,无论是当用户滚动到列表的当前端,还是当他们单击某种类型的“显示更多”按钮(也称为“无限滚动”)时。希望有帮助。 结束 文章导航