forked from EtherDream/jsproxy
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
6b69387
commit ea1cf64
Showing
5 changed files
with
86 additions
and
55 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
# v0.1.0 | ||
|
||
## 主要更新 | ||
|
||
* 后端代理接口调整,修复缓存失效的问题 | ||
|
||
* 前端增加缓存记录,提高浏览器缓存命中率 | ||
|
||
* 前端增加 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` 字段,因为只有这个字段可以灵活存储数据,[其他几个字段都有些限制](https://fetch.spec.whatwg.org/#cors-unsafe-request-header-byte),容易出现 preflight。 | ||
当然这个功能目前仍在研究中,未来也许会有更好的方案。 | ||
|
||
|
||
## 节点缓存 | ||
|
||
由于切换 节点/线路 会使得最终的 URL 发生变化,从而导致无法利用已有的缓存。 | ||
|
||
目前增加了静态资源记忆功能,记住当前使用的域名。下次加载时直接使用上次的域名,从而命中浏览器缓存。 | ||
|
||
存储查看:`indexedDB` -> `.sys` -> `url-cache` | ||
|
||
|
||
## Cookie 持久化 | ||
|
||
目前 Cookie 信息定期同步到本地存储,浏览器重启后可保持之前的会话。 | ||
|
||
存储查看:`indexedDB` -> `.sys` -> `cookie` | ||
|
||
|
||
## CORS 站点直连 | ||
|
||
不少网站(通常是 CDN)在返回头中配置了 `access-control-allow-origin: *`,并且不校验 `origin` 和 `referer`(或者允许为空)。 | ||
|
||
对于这样的站点,前端可直接连接而无需通过代理,从而能加快访问速度,并且节省代理服务器流量。 | ||
|
||
目前收集了部分站点,只在纯前端实现。未来将尝试和服务端配合,覆盖所有这样的场合。 | ||
|
||
|
||
## 节点权重支持 | ||
|
||
不同于之前均匀分配负载,目前可配置每个线路的权重,从而对部分线路增加或降低负载。 | ||
|
||
例如演示案例中的 cfworker 节点,使用 1 个收费版 + 多个免费版的方案。由于免费版有访问频率限制,因此使用更低的权重以减少负载。(命中比例 = 当前值 / 总值) | ||
|
||
|
||
## 详细错误信息 | ||
|
||
目前可显示代理服务器的 DNS 解析错误、HTTP 连接错误、白名单错误等,取代之前过于简陋的报错信息。 | ||
|
||
|
||
## Storage API Hook | ||
|
||
增加 `indexedDB` 和 `Cache Storage` 的 key 枚举、删除的 API Hook。 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,32 +1,11 @@ | ||
# 完整更新日志 | ||
|
||
## v0.0.1 | ||
* 2019-05-30 更新 cfworker,对 ytb 视频进行了优化(推荐选 1080p+,不会增加服务器压力) | ||
|
||
全选的 URL 模型,取代 [之前版本](https://github.com/EtherDream/jsproxy/tree/first-ver)。[查看详细](v0.0.1.md) | ||
* 2019-05-29 nginx 增加静态资源服务,可同时支持代理接口和首页访问 | ||
|
||
* 2019-05-27 增加 nio.io、sslip.io 后备域名,减少申请失败的几率 | ||
|
||
## 开发中... | ||
* 2019-05-26 安装时自动申请证书(使用 xip.io 域名),安装后即可预览 | ||
|
||
最新临时的测试,没分版本号 | ||
|
||
### 节点切换功能(服务端) | ||
|
||
服务端对于体积较大的资源不返回内容,只返回长度、修改时间、首块 hash 等信息。浏览器从廉价带宽获取完整内容,如果返回信息不一致,再从原服务器获取。 | ||
|
||
目前体积阈值为 400KB。廉价带宽使用 Cloudflare Worker,源码参考 `cf-worker` 目录。虽然 Cloudflare Worker 延时较高,但带宽和流量无限制,且费用较低(1000 万次请求 5 美元),非常适合大文件代理。 | ||
|
||
|
||
### 静态资源加速(前端) | ||
|
||
通过自动化工具分析 TOP 10 网站的资源,将缓存时间久的静态资源,预先下载到 CDN 上(包括一个 URL Hash 列表)。前端遇到这些资源时直接从 CDN 获取,大幅减少下载时间,以及代理服务器的带宽占用和流量消耗。 | ||
|
||
目前 CDN 暂使用 jsdelivr。未来尝试将资源上传到贴吧等支持 CORS 的免费图床~ | ||
|
||
另外演示首页的静态资源也使用 CDN。 | ||
|
||
|
||
### 安装工具更新 | ||
|
||
增加一键安装脚本,Linux x64 系统可自动安装。 | ||
|
||
(没仔细测。有问题 issure 反馈。以后有时间补充测试案例。。。) | ||
* 全新的 URL 模型,取代 [之前版本](https://github.com/EtherDream/jsproxy/tree/first-ver)。[查看详细](v0.0.1.md) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters