前言¶
DSH 的网页端运行在浏览器中,除了常规的功能加载,还会受到网络波动、浏览器缓存策略和连接生命周期影响。移动端切后台后连接被静默断开、浏览器没有立刻感知到断开、页面重复加载造成额外传输,都是比较常见的情况。
dsh-web-network-optimizer 针对这些问题提供连接状态提示、断连恢复、响应压缩和浏览器缓存策略,适合需要稳定使用 DSH Web 界面,或在弱网环境下使用 DSH 的开发者。
这是什么¶
dsh-web-network-optimizer 是由 enterhalf 维护的 DSH 插件,采用 MIT 许可证。它通过缓存与压缩技术降低网页端传输量,并提供网络断连指示与自动断网重连能力。
插件声明的依赖为:
cordis >=4.0.0-rc <5
核心功能¶
连接守护¶
插件会在页面回前台时以及每 30 秒心跳主动探测连接真实状态。发现旧连接已死时,会触发自动恢复。
会话标题左侧的小圆点用于显示连接状态:
- 绿色:连接正常
- 灰色:检查中或重连中
- 红色脉冲:离线、异常或正在恢复
点击小圆点可手动强制重连。
响应压缩¶
插件对所有可压缩响应下发 brotli,并以 gzip 作为兜底。本地回环访问与远程访问的行为保持一致。
浏览器缓存¶
缓存策略按资源类型区分:
/assets/*与 favicon 使用文件名即内容哈希的方式,更新后会更换 URL,并下发Cache-Control: immutable。- 插件
client.js使用no-cache,并由插件补发ETag;未变化时返回304,变化时更新内容。
这样做的目标是减少重复传输,同时避免长期缓存导致无法跟随更新。
分插件流量账本¶
打开:
设置 → Web 网络优化器 面板
可以查看每个插件本次加载与累计流量、压缩节省、缓存命中情况。
缓存自检¶
怀疑浏览器缓存没有跟上更新时,面板「缓存自检」提供 DevTools 手动清缓存的三选一指引,可一键复制菜单操作后手动执行。
安装与卸载¶
安装插件:
dsh plugin --profile web add dsh-web-network-optimizer@latest
卸载插件:
dsh plugin --profile web remove dsh-web-network-optimizer
卸载时,路由包装会被完整还原;账本文件保留在:
~/.dsh/storages/dsh-web-network-optimizer/
孤儿缓存由浏览器配额自动回收。
本地开发安装可使用目录路径:
dsh plugin --profile web add /path/to/dsh-web-network-optimizer
典型用法¶
1、安装后打开 DSH Web 界面,在会话标题左侧查看小圆点,确认连接状态。
2、如果怀疑连接卡住,点击小圆点执行手动强制重连。
3、进入:
设置 → Web 网络优化器 面板
查看流量账本,确认本次加载、累计流量、压缩节省与缓存命中。
4、如果页面内容没有更新,打开面板「缓存自检」,复制 DevTools 菜单操作并在浏览器中执行一次。
适用场景与注意¶
该插件适合两类使用场景:
- 希望减少 DSH 网页端重复传输、降低页面加载开销。
- 在网络不稳定、移动设备切后台后容易出现断连的环境中使用。
使用前需要注意:
- 插件以当前
dsh进程权限运行,安装前应检查源码、依赖与 MIT 许可证。 immutable仅用于文件名自带哈希的/assets与 favicon;client.js使用no-cache + ETag,避免浏览器因immutable不再发起请求。- 极端场景,例如浏览器异常缓存、代理改写等,仍可能残留旧内容,需要按面板指引手动清除浏览器缓存。
结尾¶
dsh-web-network-optimizer 把 DSH 网页端常见的“断连无感知”和“重复传输”两个问题纳入同一套处理:连接状态可见、断连可恢复、缓存与压缩策略可检查。
GitHub 仓库:
https://github.com/enterhalf/dsh-web-network-optimizer
目录页 URL 未在已核实资料中确认,建议以 GitHub 仓库和插件包信息为准。