Skip to content

Latest commit

 

History

History
70 lines (32 loc) · 2.96 KB

v0.1.0.md

File metadata and controls

70 lines (32 loc) · 2.96 KB

v0.1.0

更新内容

  • 后端代理以及 cfworker 接口调整,修复缓存失效的问题

  • 前端增加缓存记录,提高浏览器缓存命中率

  • 前端增加 Cookie 持久化

  • 前端增加 CORS 站点直连功能

  • 配置调整,支持线路权重

  • 更详细的服务器错误信息显示

  • 增加更多的 Storage API Hook

代理接口调整

之前代理接口使用固定的路径 /http,目标 URL 设置在请求头 --url 字段,同时返回头配置了 vary: --url 字段,希望能根据不同的 --url 请求返回不同的缓存内容。但事实上该方案并未生效,和预想的不同,浪费了不少流量。(对 vary 了解不够透彻~)

为修复这个问题,目前将代理接口改成 /http/目标 URL,去掉了 vary 字段。同时将绝大部分的请求字段打包到 Referer 字段里,使请求头保持简单,不产生 CORS preflight。

如果不打包,则会频繁出现 preflight,即使配置了 Access-Control-Max-Age 也没用,因为 max-age 只对特定 URL 记忆,而现在的 URL 几乎每次都不同,所以必须保持请求头足够简单。至于为什么选择 Referer 字段,因为只有这个字段可以灵活存储数据,其他几个字段都有些限制,容易出现 preflight。

当然这个功能目前仍在研究中,未来也许会有更好的方案。

节点缓存

由于切换 节点/线路 会使得最终的 URL 发生变化,从而导致无法利用已有的缓存。

目前增加了静态资源记忆功能,记住当前使用的域名。下次加载时直接使用上次的域名,从而命中浏览器缓存。

存储查看:indexedDB -> .sys -> url-cache

Cookie 持久化

目前 Cookie 信息定期同步到本地存储,浏览器重启后可保持之前的会话。

存储查看:indexedDB -> .sys -> cookie

CORS 站点直连

不少网站(通常是 CDN)在返回头中配置了 access-control-allow-origin: *,并且不校验 originreferer(或者允许为空)。

对于这样的站点,前端可直接连接而无需通过代理,从而能加快访问速度,并且节省代理服务器流量。

目前收集了部分站点,只在纯前端实现。未来将尝试和服务端配合,覆盖所有这样的场合。

节点权重支持

不同于之前均匀分配负载,目前可配置每个线路的权重,从而能对部分线路增加或降低负载。

例如演示案例中的 cfworker 节点,使用 1 个收费版 + 多个免费版的方案。由于免费版有访问频率限制,因此使用更低的权重以减少负载。(命中比例 = 当前值 / 总值)

详细错误信息

目前可显示代理服务器的 DNS 解析错误、HTTP 连接错误、白名单错误等,取代之前过于简陋的报错信息。

Storage API Hook

增加 indexedDBCache Storage 的 key 枚举、删除的 API Hook。