如何减少WordPress网站服务器上存储的图片文件数量
WordPress减少本地媒体存储文件数量解决方案
针对你提出的4种方案,分别给出可落地的实操建议:
方法1:仅生成站点实际使用的图片尺寸
首先你可以通过代码查询当前主题注册的全部图片尺寸,将以下代码临时添加到主题functions.php文件中,登录WordPress后台即可在顶部通知栏看到所有注册的尺寸列表,查看完成后删除该段代码即可:
function show_all_registered_image_sizes() { global $_wp_additional_image_sizes; $default_sizes = get_intermediate_image_sizes(); echo '<pre style="background:#fff;padding:20px;">'; echo "默认注册尺寸:\n"; print_r($default_sizes); echo "\n自定义注册尺寸:\n"; print_r($_wp_additional_image_sizes); echo '</pre>'; } add_action('admin_notices', 'show_all_registered_image_sizes');
确认你需要保留的尺寸后,添加以下代码到functions.php即可禁用多余尺寸的自动生成:
function filter_used_image_sizes($sizes) { // 数组内填入你确认需要保留的尺寸名称 $allowed_sizes = ['thumbnail', 'medium', 'your-theme-custom-size']; foreach ($sizes as $size_key => $size_value) { if (!in_array($size_key, $allowed_sizes)) { unset($sizes[$size_key]); } } return $sizes; } add_filter('intermediate_image_sizes_advanced', 'filter_used_image_sizes');
方法2:动态生成对应尺寸图片
该方案可实现本地仅存储原图,访问时按需生成图片,实现逻辑如下:
- 首先禁用所有缩略图自动生成,参考方法1的代码仅保留需要的尺寸即可,如需仅存原图可清空允许保留的尺寸列表
- 配置站点伪静态规则,将带尺寸参数的图片请求转发到自定义处理脚本
- 脚本中使用WordPress内置的
WP_Image_Editor类校验请求参数合法性、读取原图生成对应尺寸,可选择生成后直接输出不存储到本地,或存储后后续请求直接返回
注意事项:必须添加参数白名单校验,避免被恶意请求遍历生成大量文件占满服务器资源。
方法3:CDN实现减少本地存储
普通CDN缓存模式无法减少本地文件数量,需搭配CDN的图片实时裁剪功能使用:
- 本地上传仅保留原图,禁用所有本地缩略图生成
- 前端所有图片链接替换为CDN域名地址,后缀添加对应尺寸的裁剪参数
- CDN侧自动完成图片裁剪、缓存、返回,裁剪后的文件仅存储在CDN节点,不会占用本地服务器存储空间
该方案是目前综合成本、稳定性最优的方案,不需要额外修改站点核心逻辑,也不需要占用本地额外存储。
方法4:可用插件推荐
- Disable Media Sizes:可视化选择需要保留的图片尺寸,无需写代码即可禁用多余缩略图生成,适配方法1的需求
- Dynamic Image Resizer:开箱即用的动态图片生成插件,支持自定义是否本地持久化存储生成的图片,适配方法2的需求
- Media Cleaner:自动扫描媒体库中未被站点引用的文件、多余的历史缩略图,支持一键批量删除,可用于清理现有堆积的多余媒体文件
内容的提问来源于stack exchange,提问作者Iacovos Georgiou
相关产品推荐
相关产品推荐

