WordPress使用Memcached内存缓存优化后台媒体库加载慢的问题,WordPress媒体库优化加速缓存访问

Wordpress3年前 (2022)发布 SUYEONE
1.2K 0 0

在过去的几年中,我的媒体库积累了大量的图片,时常需要回顾几个月前的资料,但加载速度却让我感到困扰。问题在于,系统并未对媒体库的月过滤功能进行内存缓存。今天,我想分享一种方法,利用Memcached来提升WordPress后台媒体库的加载速度。

通常,WordPress会直接查询数据库来获取博客附件的月份信息。每当打开媒体库、添加媒体或弹出“添加媒体”窗口时,都会触发这一查询,导致些许延迟。不过,对于未启用内存缓存或者对此不太在意的人来说,可能并未察觉到这种滞后。

为了解决这个问题,我们可以采用Memcached缓存媒体库的月份数据。因为一旦附件数量固定,每月的数据就不会有太大变化。例如,你可以参考WPJAM插件,它通过Memcached实现这一功能,使得操作体验更流畅。

以下是将此功能添加到你的当前主题functions.php文件中的代码,用于使用内存缓存优化媒体库月份加载:

“`php
// 解决WordPress后台媒体库加载慢的问题,利用Memcached进行内存缓存
// 参考:https://zhujicankao.com/66484.html
function optimize_media_library_months() {
$months = get_transient(‘optimized_media_months’);

if (!$months) {
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(‘optimized_media_months’, $months, WEEK_IN_SECONDS);
}

return $months;
}
add_filter(‘media_library_months_with_files’, ‘optimize_media_library_months’);
“`

当然,如果你想移除这个缓存,以下代码可以帮助你在编辑、添加或删除附件时清除后台媒体库的月份缓存:

“`php
// 删除后台媒体库附件月份的缓存
// 参考:https://zhujicankao.com/66484.html
function clear_media_library_months_cache() {
delete_transient(‘optimized_media_months’);
}
add_action(‘edit_attachment’, ‘clear_media_library_months_cache’);
add_action(‘add_attachment’, ‘clear_media_library_months_cache’);
add_action(‘delete_attachment’, ‘clear_media_library_months_cache’);
“`

通过以上代码,你可以享受到更快的媒体库加载速度,提高工作效率。

© 版权声明

相关文章

暂无评论

暂无评论...
☺一键登录开启个人书签等功能!