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

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站点为例来实际操作一下,环境如下:

  • 操作系统: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服务来管理更加方便,不过这里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;
}

总结

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

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

关于软件资源类分享的免责声明:
本站为个人博客非盈利性站点,所有软件信息均来自网络,所有资源仅供学习参考研究目的,并未做任何贩卖软件信息等行为,不存在任何商业目的及用途。
根据《计算机软件保护条例》第十七条规定“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。"
您需知晓本站所有分享内容资源均来源于网络,仅供用户交流学习与研究使用,版权归属原版权方所有,版权争议与本站无关,用户本人下载后不能用作商业或非法用途,需在24个小时之内从您的电脑中彻底删除上述内容,否则后果均由用户承担责任。
如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担,如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇