一、情况介绍
发现多图文章的时候加载特别慢,通过F12查看网络发现是图片太大导致的,所以如果想提高访问速度,就只有想办法缩小图片大小了。
二、解决思路
最开始想的是搞个图床,用图床自带压缩来解决,看了以下halo中插件只支持兰空图床,搭建一个后发现halo无法一键替换文章图片链接,只有一个个手动修改,太麻烦了就放弃该方法了。
后续了解到了webp格式图片,发现有webp-server-go这玩意,直接网页搜索对应文章发现设置了都不行,因为部署环境不同,无法直接按照文章内容配置,所以采写了这篇文章。
三、部署方法
注意!该方法会导致gif无法加载,因为halo中文章默认显示的thumbnails里面的图,gif不会存在在里面,除非你手动复制过去!
先说下自身环境,底层系统位debian、debian上部署的1panel,通过1p的应用商店部署的halo。
查询webp-server-go官方文档,可以看到能docker部署,这里直接使用docker部署。
先打开1panel ---> 容器 ---> 编排,点击创建编排。
文件夹输入webp或者其他名字,docer-compase直接把以下内容粘贴进去即可
version: '3' services: webp: image: webpsh/webp-server-go # image: ghcr.io/webp-sh/webp_server_go restart: always volumes: - /opt/1panel/apps/halo/halo/data/attachments/thumbnails:/opt/pics/upload/thumbnails - ./exhaust:/opt/exhaust - ./metadata:/opt/metadata - ./config.json:/etc/config.json ports: - 127.0.0.1:3333:3333
创建好后,点击编排目录中的目录图标,进入webp文件目录。
在这里面创建一个config.json文件,用于配置webp-server-go的一些配置,按照下方内容复制进去即可。
{ "HOST": "0.0.0.0", "PORT": "3333", "QUALITY": "80", "IMG_PATH": "/opt/pics", "EXHAUST_PATH": "/opt/exhaust", "IMG_MAP": { }, "ALLOWED_TYPES": ["jpg", "png", "jpeg", "bmp", "svg", "heic", "nef", "webp"], "CONVERT_TYPES": ["webp"], "STRIP_METADATA": true, "ENABLE_AVIF": false, "ENABLE_EXTRA_PARAMS": false, "EXTRA_PARAMS_CROP_INTERESTING": "InterestingAttention", "READ_BUFFER_SIZE": 4096, "CONCURRENCY": 262144, "DISABLE_KEEPALIVE": false, "CACHE_TTL": 259200, "MAX_CACHE_SIZE": 0 }
按照上面的配置文件,webp服务会禁止转换gif文件(如果是低配云服务器(2c2g这种)建议关闭,不然直接云服务器直接卡死了)。
在打开:网站设置 ---> 找到halo的站点 ---> 网站设置 ---> 反向代理。
创建一个新的反向代理,向下图一样配置即可
四、效果展示
五、其他
提前转换图片,需要进入容器内执行(如果挂载了json配置文件,需要进入到配置文件所在路径执行)
# 1)进入配置文件所在路径
cd /etc
# 执行以下命令提前转换图片(使用2线程)
webp-server -prefetch-foreground -jobs=2