fix(history): give history entries real site favicons
历史条目的图标原先写死 fas fa-globe,整栏都是地球图标。 - 新增 history-server/favicon.go:后台抓取每个 host 的 favicon 并缓存到 data/item-icons/,命中后 conf.yml 写本地文件名,与手工图标同一套解析。 抓取顺序 <host>/favicon.ico → 首页 <link rel=icon>;3 个 worker, 失败 6 小时后再试;完成后合并触发一次 conf.yml 重建。 - 只缓存 Dashy 能渲染的格式:其 isImage() 白名单是 [svg,png,jpg], 写 .ico 进去完全渲染不出来。因此 .ico 先抽内嵌 PNG,若是传统 BMP/DIB 编码则解码后转 PNG(Google 这类站点只给老式 .ico)。 - 内网地址用 host:port 区分(不同端口的服务不再共用一个图标),且只直连; 外网站点直连失败时自动复用 SearXNG outgoing.proxies 的代理, 也可用 NAVI_FAVICON_PROXY 覆盖。 - 修掉一个真实缺陷:导航项都没有访问数据时,原来会提前 return 并把 「历史访问」清成只剩安装入口 —— 只浏览站外站点时真实历史会整个消失。 现在只冻结「常用服务」,历史照常生成。 - Dockerfile 去掉 # syntax=docker/dockerfile:1:该指令会让 BuildKit 去 pull docker/dockerfile 前端镜像,无外网环境直接构建失败;本文件未用 BuildKit 语法。 实测:6/6 站点(含 google.com 的 DIB 型 ico、github.com、docker.com、 news.ycombinator.com 与两个内网服务)均得到真实图标,页面 naturalWidth>0。
This commit is contained in:
14
README.md
14
README.md
@ -182,6 +182,20 @@ icon: fas fa-star # Font Awesome
|
||||
- 每 30 秒检查本地队列,**仅在有新数据时 POST**
|
||||
- 搜索引擎 URL 在本地过滤,不上传
|
||||
- 「常用服务」和「历史访问」按总访问频次自动排序
|
||||
- 历史条目的图标由服务端自动抓取并缓存(见下)
|
||||
|
||||
### 历史条目的站点图标
|
||||
|
||||
history 里的站点不可能像手工导航项那样预先配好图标,所以服务端会**后台抓取每个
|
||||
host 的 favicon** 并缓存到 `data/item-icons/favicon-<host>.png`,缓存命中后
|
||||
conf.yml 里写的是本地文件名,与手工图标走同一套解析。
|
||||
|
||||
- 抓取顺序:`<host>/favicon.ico` → 首页 `<link rel="icon">`
|
||||
- `.ico` 会先尝试抽出内嵌 PNG;若是传统 BMP/DIB 编码,则服务端解码并转成 PNG
|
||||
(Dashy 的 `isImage()` 只认 `svg/png/jpg`,直接写 `.ico` 是渲染不出来的)
|
||||
- 内网地址(含端口,如 `192.168.1.10:3000`)只走直连;外网站点先直连,
|
||||
失败时自动复用 SearXNG `outgoing.proxies` 的代理(也可用 `NAVI_FAVICON_PROXY` 单独指定)
|
||||
- 抓不到就保持 `fas fa-globe`,6 小时后再试;缓存文件持久化在 data 卷
|
||||
|
||||
## 管理后台
|
||||
|
||||
|
||||
Reference in New Issue
Block a user