01为什么必须把外链图片转成本地图片
- 可用性风险:图片托管在别人的图床或 CDN 上,对方停止服务、清理文件、启用防盗链,你的历史文章就会集体出现空白图。
- 速度损耗:跨域请求需要额外的 DNS 解析与 TLS 握手,首屏图片多的时候感知很明显。
- SEO 与合规:图片搜索流量会归到对方域名;同时热链他站图片在部分场景下存在版权争议。
- 无法优化:外链图你无法压缩、无法转 WebP、无法加 srcset,等于放弃了图片侧的全部性能优化空间。
02第一步:扫描全站外链图片
- 1进入插件设置页,先执行一次「扫描」。这一步只读不写,会把全站文章与页面里的外链图片地址列出来。
- 2按文章维度查看结果,优先处理流量高的历史文章。
- 3留意扫描结果里的「重复出现次数」——同一张图在多篇文章里被引用时,转存一次即可复用。
先跑扫描、确认清单,再执行下载。这样你可以提前发现哪些图片源站已经失效,避免批量任务跑到一半大量报错。
03第二步:批量下载到本地媒体库
执行转存时,插件会把图片下载进 WordPress 媒体库,并自动改写文章正文里的图片地址。改写是逐个文章进行的,所以即使中途中断,已处理的文章也是完整一致的,不会出现半改状态。
如果文章数量很多,建议分批跑。单次处理过多图片容易触发 PHP 最大执行时间限制,表现是任务跑到一半白屏或报 504。
转存前先备份数据库。虽然插件会记录原地址以便回滚,但有一份备份永远是更稳的做法。
04第三步:格式转换与智能压缩
图片本地化之后才谈得上优化。插件支持单独或组合执行「格式转换」与「压缩」:
| 图片类型 | 建议处理 | 预期收益 |
|---|---|---|
| 照片 / 截图(JPG/PNG) | 转 WebP + 压缩 | 体积通常下降 40%–70%,肉眼几乎无损 |
| 带透明通道的图(PNG) | 保留 PNG 或转 WebP | WebP 支持透明,多数场景可直接转 |
| 动图(GIF) | 谨慎处理 | 转 WebP 可能丢失部分兼容性,建议保留原格式 |
| 已经是 WebP | 只做压缩 | 避免二次转码造成画质累积损失 |
WebP 在现代浏览器已经全面支持,但如果你的站点还有相当比例的老旧访问环境,建议保留 JPG/PNG 作为回退,而不是直接替换原文件。
05第四步:发布时自动转存
历史文章处理完之后,把「发布时自动转存」打开。之后你在编辑器里粘贴外部图片,插件会在保存文章时自动把它下载到本地。这样就不需要每隔几个月再跑一次批量清理。
自动转存会在保存时增加一点耗时,如果你的编辑器保存本身就慢,可以改成按需手动触发。
06常见报错与处理
图片下载失败 / 抓到的是防盗链占位图
部分图床会检查 Referer。这类图片用程序直接抓会拿到一张「禁止盗链」的提示图。处理办法是先在浏览器里把图片另存到本地,再通过媒体库手动上传,然后手动替换那几处引用。数量通常不多,人工处理反而更快。
任务超时 / 500 错误
根因是单次处理的图片数量超过了 PHP `max_execution_time`。解决办法是把文章分成几批跑,或者临时把执行时间上限调高。不要一次性处理几百篇。
转存后图片显示不出来
先确认媒体库文件确实存在,再检查服务器目录权限——`wp-content/uploads` 需要 Web 进程可写。权限问题表现为文件记录在数据库里但磁盘上没有实体文件。