CDN流量太贵?图床图片批量压缩替换

CDN流量太贵?图床图片批量压缩替换

💡 原文中文,约2800字,阅读约需7分钟。
📝

内容提要

作者因CDN流量费用过高,将Notion封面图压缩至800×600px,并用ImageMagick脚本批量压缩图床图片至50%质量后重新上传,同时延长CDN缓存至30天并开启防盗链。文中提供compress.sh脚本用法及核心代码,支持自定义质量参数,最终有效降低流量消耗。

🔎

延伸解读

压缩质量与流量权衡

文章将图片质量压缩至50%,并配合CDN缓存30天和防盗链,显著降低流量消耗。但50%质量对某些图片可能造成可见的画质损失,尤其对细节丰富的照片。建议根据图片用途调整质量参数,例如封面图可适当提高质量,而内容图可保持较低质量。同时,压缩前应备份原图,以便未来需要更高分辨率时恢复。

脚本的适用性与限制

compress.sh脚本基于ImageMagick的convert命令,支持jpg、jpeg、png、gif格式,但未处理WebP等现代格式。脚本会覆盖输出目录中的同名文件,且不保留原图的元数据(如EXIF)。对于大量图片,建议先在小规模目录测试,确认输出效果和文件大小符合预期。此外,脚本依赖Linux环境,Windows用户需借助WSL或替代工具。

CDN缓存与防盗链的补充作用

除了压缩图片,作者还延长CDN缓存至30天并开启防盗链,这两项措施对降低流量同样重要。长缓存可减少重复请求,防盗链可防止其他网站直接引用图片消耗流量。但需注意,缓存时间过长可能导致更新图片后用户看到旧版本,建议在更新图片时主动刷新CDN缓存。防盗链则需配置允许的域名白名单,避免误伤合法引用。

Q&A

如何降低CDN流量费用?

可以通过压缩图片尺寸和质量、延长CDN缓存时间、开启防盗链等方式降低CDN流量费用。具体做法包括:将Notion封面图压缩至800×600px,使用compress.sh脚本将图床图片批量压缩至50%质量后重新上传,同时将CDN缓存时间设置为30天并开启防盗链。

compress.sh脚本如何使用?

compress.sh脚本的用法是:`./compress.sh <source_path> <output_path> [quality]`。其中source_path是原图目录,output_path是压缩后图片保存位置,quality是压缩质量百分比,默认80%。例如,将source文件夹下所有图片压缩到50%质量并输出到compressed文件夹,命令为:`./compress.sh ./backups ./output 50`。

compress.sh脚本的核心代码是什么?

compress.sh脚本基于ImageMagick的convert命令,核心逻辑是遍历输入文件夹下所有.jpg、.jpeg、.png、.gif文件,使用`convert "$file" -quality $quality "$output_file"`进行压缩,并保持原目录结构输出。脚本会检查convert命令是否存在,并统计压缩前后的文件数量。

批量压缩图片时如何自定义质量参数?

在运行compress.sh脚本时,通过第三个参数指定质量百分比即可。例如,`./compress.sh ./backups ./output 50`会将图片质量压缩到50%。如果不指定,默认质量为80%。

除了压缩图片,还有哪些降低CDN流量的措施?

除了压缩图片,还可以延长CDN缓存时间(例如设置为30天)和开启防盗链,以减少重复请求和外部盗链带来的流量消耗。

作者为什么决定压缩图片?

作者因为使用Notion2markdown写作上传了大量高清大图,导致CDN流量账单飙升,为了减少流量消耗(作者自嘲“穷”),决定压缩图片尺寸和质量。

🏷️

标签

➡️

继续阅读