dsh-web-network-optimizer:DSH 网页端网络优化与连接守护

前言

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 仓库和插件包信息为准。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜