Opened 2 years ago
Last modified 13 months ago
#52759 new feature request
Add a filter to get_available_post_mime_types() function to allow overriding extremely slow query.
Reported by: |
|
Owned by: | |
---|---|---|---|
Milestone: | Awaiting Review | Priority: | normal |
Severity: | normal | Version: | |
Component: | Media | Keywords: | good-first-bug has-patch |
Focuses: | performance | Cc: |
Description
On sites sites with lot of posts the query used in get_available_post_mime_types is extremely slow.
It would be nice to have a filter that will allow us to override this query and for example cache the results.
It could be something simillar to this filter:
https://core.trac.wordpress.org/browser/tags/5.6/src/wp-includes/media.php#L4172
<?php function get_available_post_mime_types($type = 'attachment') { global $wpdb; $types = apply_filters('get_available_post_mime_types', null, $type); if ( ! is_array( $types ) ) { $types = $wpdb->get_col($wpdb->prepare( "SELECT DISTINCT post_mime_type FROM $wpdb->posts WHERE post_type = %s", $type ) ); } return $types; }
Change History (10)
#1
@
2 years ago
- Component changed from General to Media
- Focuses performance added
- Keywords needs-patch good-first-bug added
This ticket was mentioned in PR #1088 on WordPress/wordpress-develop by maciejmackowiak.
2 years ago
#3
- Keywords has-patch added; needs-patch removed
#4
@
2 years ago
Here is a pull request:
https://github.com/WordPress/wordpress-develop/pull/1088/files
This ticket was mentioned in Slack in #core-media by antpb. View the logs.
2 years ago
#6
@
2 years ago
Hi there,
I'm definitely for a filter to short circuit this slow query, but I think first we need to fix this slow query by implementing a cache, wether it use the internal cache API system from Core or the Transient API, (check the slack thread we started for further comments)
#8
@
2 years ago
check the slack thread we started for further comments
Can you point me to that thread, please?
#9
@
2 years ago
@maciejmackowiak The link is right above. https://wordpress.slack.com/archives/core-media/p1615475295157700
#10
in reply to:
↑ 2
@
13 months ago
Replying to archon810:
For us, it adds an additional 0.35s or so (right now, more if db is loaded).
SELECT SQL_NO_CACHE DISTINCT post_mime_type FROM wp_posts WHERE post_type = 'attachment' > OK > Time: 0.35sand I hope with the new proposed filter, we will be able to speed up the site even more.
Ok, let's say a new filter is added, what next? How would you like to improve the query for better performance?
Drop an example of such a query. I am curious about your experience with this.
+1 for this.
For us, it adds an additional 0.35s or so (right now, more if db is loaded).
On the grid view it is called from here:
https://github.com/WordPress/WordPress/blob/785cb6cc7d4d17ef0aa16b187dcfb6a8dc513e1b/wp-admin/includes/class-wp-media-list-table.php#L97
It calls this function:
https://github.com/WordPress/WordPress/blob/00680f2e89766e4ac9a71c68a8cccd3a141afb34/wp-admin/includes/post.php#L1287
And here is the query:
https://github.com/WordPress/WordPress/blob/bf83c368fdfcee2b879d00b193f505038e1681f0/wp-includes/post.php#L7517
We were able to cache and greatly speed up this query already:
and I hope with the new proposed filter, we will be able to speed up the site even more.