在过去的几年里,媒体库中出现了很多图片。有时我会不断翻看几个月前的图片以供参考,我发现显示速度很慢。原来内存缓存这里没有缓存媒体库月过滤附件功能。今天给大家分享一下如何使用Memcached内存缓存优化WordPress后台媒体库加载。
WordPress直接查询数据库获取博客附件的月份,所以每次打开媒体库,或者添加媒体,打开“添加媒体”弹窗,都会去数据库查询。使用时会有一点延迟。当然,有些人甚至不打开内存缓存,他们可能并不关心这些滞后。
使用 memcache 优化媒体库月份获取
虽然不会造成什么大问题,但是如果附件不增不删,这个月的数据基本不会变。草根吧VPS用WPJAM 插件通过 Memcached 对其进行缓存。不说什么特效,至少自己添加媒体文件要舒服很多!
将以下代码复制到当前主题的functions.php文件中,以使用内存缓存媒体库的月份
// WordPress使用Memcached内存缓存优化后台媒体库加载慢的问题 // https://vps.caogenba.com.com/66484.html add_filter('media_library_months_with_files', function($months){ $months = get_transient('wpjam_media_library_months'); if($months === false) { global $wpdb; $months = $wpdb->get_results("SELECT DISTINCT YEAR( post_date ) AS year, MONTH( post_date ) AS month FROM $wpdb->posts WHERE post_type = 'attachment' ORDER BY post_date DESC"); set_transient('wpjam_media_library_months', $months, WEEK_IN_SECONDS); } return $months; });
当然,如果你不想要了,你也可以删除后台媒体库中附件月份的缓存。
// 删除后台媒体库附件月份的缓存 // https://vps.caogenba.com.com/66484.html function wpjam_delete_media_library_months_cache(){ delete_transient('wpjam_media_library_months'); } add_action('edit_attachment', 'wpjam_delete_media_library_months_cache'); add_action('add_attachment', 'wpjam_delete_media_library_months_cache'); add_action('delete_attachment', 'wpjam_delete_media_library_months_cache');