图片加载失败要可重试并升级到 HTTPS

**头像/图片「全变成文字」通常是加载失败触发了 fallback,而不是设计改了文案。** 两个隐蔽原因:源本来没有图片地址(`favicon_url` 为空);以及**失败的 URL 被当前会话永久记住,不再重试**。

要点

  • 失败状态不能永久化。 一次失败就整场会话不再重试,会把偶发的网络抖动放大成「全都坏了」。要有重试与失效机制。
  • 明文 HTTP 图片在桌面 WebView 里比命令行更容易被拦。 命令行 curl 能取到图,不代表 WebView 能加载;http:// 的图源要优先升级为 https://。
  • 兜底要有第二来源。 可升级的转 HTTPS,不可升级的退回域名 favicon,而不是直接显示文字。
  • 判定「是网络问题还是数据问题」时,先分清「这个源本来就没有图」和「有图但这次没加载出来」。

相关

  • 判据要用真值而非代理 —— 本条是该 synthesis 的一处实例:拿「会话级失败缓存」当本次加载结果
  • 样式丢失先核对类名再怀疑缓存与权限 —— 同类:先分清「本来就没有」与「这次没生效」
  • 兼容fallback会让内容重复渲染 —— 同为 fallback 路径带来的意外结果
  • 先分清平台错误还是应用错误 —— 先判断失败归属:数据源缺失还是加载环节被拦