[wp-trac] [WordPress Trac] #33885: meta_form performs a potentially expensive query
WordPress Trac
noreply at wordpress.org
Wed May 24 02:02:17 UTC 2017
#33885: meta_form performs a potentially expensive query
-------------------------------------+-----------------------------
Reporter: jorbin | Owner:
Type: defect (bug) | Status: new
Priority: normal | Milestone: Future Release
Component: Administration | Version: 4.3.1
Severity: critical | Resolution:
Keywords: has-patch needs-testing | Focuses: performance
-------------------------------------+-----------------------------
Comment (by dd32):
Replying to [comment:43 pento]:
Unfortunately, I find myself agreeing with @pento here.
Diverging DB structures and shortening field lengths is pretty much off
the table IMHO, if only to prevent data destruction now or later (in a few
years when the reason for some people having different field lengths has
been long forgotten)
> Removing the meta box is probably a big task that will involve a lot of
ongoing work unrelated to this particular ticket. Ultimately, that’s the
right solution, but I’m not sure if it’s something we should tackle to
solve this bug.
Personally I see the need for the metabox, but I also think it could
benefit greatly from a re-think, which will probably happen as part of a
new post interface at some point in the future, probably reliant upon meta
keys being registered and some form of UI being assigned, but that isn't
for this ticket :)
> That leaves caching the query result. Now, we can either cache using
`WP_Object_Cache` (so the cache is really only valuable to sites with a
persistent caching setup), or cache the results in an option, so that it’s
valuable to any site. I lean towards using the object cache, as the usual
caching solution, but I’m open to arguments either way.
A Transient seems like the best of both worlds here - memory cached when
available, DB when not. The downside is that some people will be clearing
all transients more often, and I fear those who are impacted by this the
most are probably the same users, despite that, I still think it's the
best option.
I'm thinking something along the logic lines of:
{{{
if transient doesn't exist then
create transient as unique meta_key
on initial db upgrade then
queue a single cron task to generate transient
on new meta_key addition then
suffix to transient meta_key
for display then
merge registered meta_keys with transient and display
}}}
--
Ticket URL: <https://core.trac.wordpress.org/ticket/33885#comment:44>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform
More information about the wp-trac
mailing list