阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

使用WebP Server在不改变URL的情况下将网站图像转换为WebP

286次阅读
没有评论

共计 2709 个字符,预计需要花费 7 分钟才能阅读完成。




本站提供 Linux 服务器运维,自动化脚本编写等服务,如有需要请联系博主微信:xiaozme

WebP Server 这是一个基于 Golang 的服务器,允许您动态提供 WebP 图像,在不改变图片 URL 路径的情况下,自动将 JPEG、PNG、BMP、GIF 等图像转换为 WebP 格式,从而减小图片体积,降低流量消耗和提高加载速度。

什么是 WebP?

WebP 是一种同时提供了有损压缩与无损压缩(可逆压缩)的图片文件格式,由 Google 推出,WEBP 的格式压缩率非常高,在同质量的情况下 .webp 格式的图片体积会小很多。主流的 FireFox/Chrome 浏览器已经支持 webp 图像,但目前 Safari 还不支持。

WebP Server 的作用

WebP Server 相当于一个旁路的 WEB 服务器,管理员配置好 WebP Server 后,可以自动将 JPEG、PNG、BMP、GIF 等图像转换为 WebP 格式,同时 URL 地址不会发生改变,对于 FireFox/Chrome 支持 webp 图像的浏览器,直接返回 webp 格式给用户,对于 Safari 不支持 webp 的浏览器则输出原图,做到用户无感知访问。

配置 WebP Server

这篇文章我们以 WordPress 站点为例来实际操作一下,xiaoz 的环境如下:

  • 操作系统:CentOS 7
  • 站点程序:WordPress
  • 当前 Web 服务器:nginx

下载 WebP Server

作者已经提供编译好的二进制版本,可以前往:https://github.com/webp-sh/webp_server_go/releases进行下载,下方的命令可能随着时间推移不是最新版本。

# 下载 WebP Server
wget -O webp-server https://github.com/webp-sh/webp_server_go/releases/download/0.1.2/webp-server-linux-amd64
#添加执行权限
chmod +x webp-server

创建 systemd 服务

为保持 WebP Server 后台运行,使用 systemd 服务来管理更加方便,systemd 的实践可以参考我之前的文章《Linux 系统编写 Systemd Service 实践》,不过这里 WebP Server 已经为我们提供好了 systemd 文件,我们直接使用即可。

执行下面的命令生成 systemd 服务文件

./webp-server -dump-systemd

产生的服务文件内容如下:

[Unit]
Description=WebP Server Go
Documentation=https://github.com/webp-sh/webp_server_go
After=nginx.target

[Service]
Type=simple
StandardError=journal
WorkingDirectory=/opt/webps
ExecStart=/opt/webps/webp-server --config /opt/webps/config.json
Restart=always
RestartSec=3s

[Install]
WantedBy=multi-user.target

这个服务文件直接读取的 /opt/webps/ 目录,因此我们需要先创建这个目录,并将 webp-server 放到这个目录下:

# 创建目录
mkdir -p /opt/webps/
#将 webp-server 移动到对应目录
mv webp-server /opt/webps/

创建配置文件

新建一个 /opt/webps/config.json 作为 WebP Server 的配置文件:

# 新建文件
vi /opt/webps/config.json

内容如下:

{
        "HOST": "127.0.0.1",
        "PORT": "3333",
        "QUALITY": "80",
        "IMG_PATH": "/data/wwwroot/xiaoz.me",
        "EXHAUST_PATH": "/data/caches/xiaoz.me",
        "ALLOWED_TYPES": ["jpg","png","jpeg","bmp"]
}

各参数含义如下,请根据实际情况修改:

  • HOST: 监听 IP
  • PORT: 监听端口
  • QUALITY: 优化程度,默认为 80
  • IMG_PATH: 站点图片存放路径,一般是站点根目录
  • EXHAUST_PATH: 缓存路径,这个目录需要自己创建
  • ALLOWED_TYPES: 哪些图片后缀需要转换为webp

运行 WebP Server

上面配置完成后,输入下面的命令来运行 WebP Server

# 刷新服务
systemctl daemon-reload
#启动 WebP Server
systemctl start webp-server
#开机启动
systemctl enable webp-server

nginx 反向代理

在您的站点配置文件中,添加下面的反向代理配置, 并重启 Nginx 生效。

location ^~ /wp-content/uploads/ {
    proxy_set_header Host $http_host;
    proxy_pass http://127.0.0.1:3333;
}

对比验证

使用浏览器打开 https://cdn.xiaoz.top/wp-content/uploads/2020/02/snipaste_20200220_200213.png 查看到图片大小为109Kb,图像 MIME 类型为image/png

再访问 WebP Server 的地址进行对比,可以看到图像被压缩为了55.3Kb,MIME 类型变为了image/webp,压缩效果非常明显。

其它压缩工具

对图片压缩感兴趣的同学还可以参考我之前发布的几篇文章:

总结

WebP Server 可以做到不改变图片 URL 路径的情况下,根据访客浏览器判断输出 WebP 图像还是原图,这一点非常方便。但如果网站启用了 CDN 后,CDN 边缘节点会将优化过的 WebP 图像进行缓存,若访客使用 Safari 这类不支持 WebP 图像的浏览器将导致图像无法显示。因此 WebP Server 不太适合 CDN 场景,除非您直接考虑放弃 Safari 用户。

除此之外,又拍云 CDN也支持 WebP 图像自适应,从 CDN 方面着手即可解决 WebP Server 无法使用 CDN 的痛点。

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-24发表,共计2709字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19348
评论数
4
阅读量
7806414
文章搜索
热门文章
开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南 大家好,我是星哥。之前介绍了腾讯云的 Code...
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板 1Panel:小白轻松构建 Web 服务与面板加固指南 哈喽,我是星哥,经常有人问我不...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
星哥带你玩飞牛NAS-2:飞牛配置RAID磁盘阵列

星哥带你玩飞牛NAS-2:飞牛配置RAID磁盘阵列

星哥带你玩飞牛 NAS-2:飞牛配置 RAID 磁盘阵列 前言 大家好,我是星哥之前星哥写了《星哥带你玩飞牛 ...
星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定!

星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定!

星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定! 前言 作为 NAS 玩家,你是否总被这些...
零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face 免费服务器 +Docker 快速部署 HertzBeat 监控平台 ...
开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南 大家好,我是星哥。之前介绍了腾讯云的 Code...
星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛 NAS-12:开源笔记的进化之路,效率玩家的新选择 前言 如何高效管理知识与笔记,已经成为技术...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板 前言 大家好,我是星哥。星哥发现很多新手刚接触服务器时,都会被“选购...
星哥带你玩飞牛NAS硬件03:五盘位+N5105+双网口的成品NAS值得入手吗

星哥带你玩飞牛NAS硬件03:五盘位+N5105+双网口的成品NAS值得入手吗

星哥带你玩飞牛 NAS 硬件 03:五盘位 +N5105+ 双网口的成品 NAS 值得入手吗 前言 大家好,我...
150元打造低成本NAS小钢炮,捡一块3865U工控板

150元打造低成本NAS小钢炮,捡一块3865U工控板

150 元打造低成本 NAS 小钢炮,捡一块 3865U 工控板 一块二手的熊猫 B3 工控板 3865U,搭...
自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个 AI 智能体 — 跟创业大佬对话 前言 智能体(Agent)已经成为创业者和技术人绕...
星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的 NAS 中! 大家对「数据安全感」的需求越来越高 ...