fix(public): 图标缓存优先返回真实 favicon,字母 SVG 仅作兜底

_resolve_icon 的本地缓存命中顺序改为先查 .ico/.png/.jpg/.gif 再查 .svg,
避免已生成的字母头像(.svg)遮盖后续补入的真实 favicon 缓存文件。
This commit is contained in:
bwstudio
2026-09-07 19:26:45 +08:00
parent 246564fdb3
commit 75f32647f6
+2 -2
View File
@@ -343,13 +343,13 @@ def _resolve_icon(domain: str, letter: str):
safe = _safe_name(domain)
d = _icon_dir()
# 1) 命中本地缓存(任意已知扩展名)
for ext in ('.svg', '.ico', '.png', '.jpg', '.jpeg', '.gif'):
for ext in ('.ico', '.png', '.jpg', '.jpeg', '.gif', '.svg'):
p = os.path.join(d, safe + ext)
if os.path.isfile(p):
return p, _ICON_EXT_MIME.get(ext, 'application/octet-stream')
# 2) 加锁后再次检查(避免并发重复拉取)
with _lock_for(safe):
for ext in ('.svg', '.ico', '.png', '.jpg', '.jpeg', '.gif'):
for ext in ('.ico', '.png', '.jpg', '.jpeg', '.gif', '.svg'):
p = os.path.join(d, safe + ext)
if os.path.isfile(p):
return p, _ICON_EXT_MIME.get(ext, 'application/octet-stream')