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

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

515次阅读
没有评论

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




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

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19348
评论数
4
阅读量
7801035
文章搜索
热门文章
开发者必备神器:阿里云 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-提高用户访问的响应速度和成功率
随机文章
支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare 也瘫了连监控都挂,根因藏在哪? 最近两天的互联网堪称“故障...
星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛 NAS 硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话? 前言 在选择 NAS 用预...
星哥带你玩飞牛NAS-14:解锁公网自由!Lucky功能工具安装使用保姆级教程

星哥带你玩飞牛NAS-14:解锁公网自由!Lucky功能工具安装使用保姆级教程

星哥带你玩飞牛 NAS-14:解锁公网自由!Lucky 功能工具安装使用保姆级教程 作为 NAS 玩家,咱们最...
国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号 AI 知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率 大家好,我是星哥,...
星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

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

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

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

一言一句话
-「
手气不错
浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍 前言 在 AI 自动化快速发展的当下,浏览器早已不再只是...
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

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

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

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

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的 NAS 中! 大家对「数据安全感」的需求越来越高 ...
如何免费使用强大的Nano Banana Pro?附赠邪修的用法

如何免费使用强大的Nano Banana Pro?附赠邪修的用法

如何免费使用强大的 Nano Banana Pro?附赠邪修的用法 前言 大家好,我是星哥,今天来介绍谷歌的 ...
240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

  240 元左右!五盘位 NAS 主机,7 代 U 硬解 4K 稳如狗,拓展性碾压同价位 在 NA...