我一直在做这个项目,我需要为每个事件加载事件(自定义帖子类型)和一大堆元数据。问题是,当添加越来越多的事件时,页面加载时间越来越长。
一开始只有几个事件,这根本不是问题,但现在当系统页面中有100多个事件时,加载会花费6秒,这太长了。
我正在做的示例:显示系统中的所有事件(以下所有操作都在插件中完成)我使用get\\u posts加载所有事件并指定自定义post类型。我循环浏览所有帖子,并使用get_post_meta
在一次通话中。
在测试瓶颈所在的位置时,我发现get_post_meta
执行时间从4.5秒下降到14毫秒。我还测试了如果我像这样单独加载每个元数据会发生什么:get_post_meta($post->ID, "meta_value", true);
如果我有一个只需要几个meta值的视图,这会加快加载过程,可以减少20%的加载时间,但当我几乎需要全部加载时间时,加载时间没有变化。
我还注意到get_post_custom
在这种情况下没有真正的帮助。
在网上浏览(这里,博客等)之后,人们指出get_posts
, 所有元数据都会自动检索和缓存。但从执行时间和处理的查询量来看,这似乎不是真的。
有没有办法通过php/mysql进一步加快速度?
我想的一件事是:是否有一种方法可以在一次调用中获取所有帖子和每个帖子的元数据。但我没有幸在网上找到任何可以帮助我实现这一目标的东西。