ClientWorker 用规则驱动黑科技 || 一个基于规则的前端路由拦截器

2022-07-13 11:08:08 +08:00
 ChenYFan

ClientWorker

文档地址:ClientWorker

↑这也是用 ClientWorker 搭建的!

ClientWorker 目前只涵盖了 ServiceWorker 的 路由拦截、路由劫持、请求 /响应(头、状态)修改,未来将支持缓存控制、请求 /响应(内容)修改。

它能干什么

由 ServiceWorker 驱动,目的是用正则规则定义一切。

虽然我开发的目的是为了给小白好好用 ServiceWorker ,但其要求一点也不小白,是问哪里有不熟悉 JavaScript ,却非常熟悉正则和 yaml 的小白呢

引擎

独创的两台前端并发引擎:ClassicParallel,可以用于同时并发请求多个请求,差异请见Engine

规则

分为捕捉规则和搜索规则,具体请见文档Rule

2416 次点击
所在节点    分享创造
18 条回复
ChenYFan
2022-07-13 11:51:29 +08:00
项目地址忘记贴了。。。
https://github.com/ChenYFan/ClientWorker
SunsetShimmer
2022-07-13 13:28:23 +08:00
~~不熟悉 JavaScript ,认识正则,熟悉 yaml 的小白就在这里呀~~
文档比 freecdn 清晰( freecdn 好像没文档?),接入方式也很友好。
lzgshsj
2022-07-13 13:43:30 +08:00
我记得 freecdn 的作者好像也在 v 站来着
zhaohai
2022-07-13 13:47:00 +08:00
不知道怎么绕备案
ChenYFan
2022-07-13 13:52:19 +08:00
@lzgshsj 不不不不不,两个工作原理基本不一样,除了两个并发引擎撞了一个(那个并发引擎也不是故意撞的,之前看没看懂,后来自己写出来了才发现原理一样,但确实是受 freecdn 启发;另一个并发引擎则完全不一样)

此外,ClientWorker 的目的是用规则定义工作,和 freecdn 的清单转发天差地别
ChenYFan
2022-07-13 13:52:51 +08:00
@zhaohai 其实就是路由重写到国内服务器,裸 ip 或非标端口就行
qq316107934
2022-07-13 14:30:12 +08:00
@ChenYFan 这么做没有 CORS 问题吗,是不是需要后端改造支持 CORS
ChenYFan
2022-07-13 15:17:16 +08:00
@qq316107934 yep ,虽然 ClientWorker 有一键降级 SimpleRequest 功能可以避免大部分 Preflight 问题,但是 CORS 是最基础的浏览器保护,这个是无法绕过的,Access-Control-Allow-Origin 必须包含当前站
learningman
2022-07-13 15:37:44 +08:00
第一次访问不就寄了,sw 升级的时候也寄了
ChenYFan
2022-07-13 16:15:59 +08:00
@learningman 对,所以只要确保首屏不宕机,新用户是不会受影响的。

至于更新,配置更新可以用在配置里写上下一次更新的地址,这样原配置服务器宕机了也没关系。
而 sw 配置应该可以用 eval+fetch 热补丁,在下一次关闭 SW 前确保最新
zhaohai
2022-07-13 21:21:51 +08:00
@zhaohai #4 腾讯云试过非标端口,一样检测到啊。试过用 CDN 指向国内 x.x.x.x:xxxx 还是检测到未备案
ChenYFan
2022-07-13 23:18:37 +08:00
@zhaohai 纯 ip ,无域名,https ( zerossl ),我自己都用了一年了...你是不是绑域名了
yanyaovo
2022-07-19 23:18:08 +08:00
@ChenYFan 大佬,我按那个 ICP 绕备、家宽、动态加速的试例去做了,但是 cw 不知道为什么,会一直卡在反复尝试安装,能在项目地址那提个 issues 不。用的也是纯 ip ,zerossl ,应该和您是相似的 QwQ
ChenYFan
2022-07-20 12:07:39 +08:00
@yanyaovo 可以啊,如果 v2 上解释不清可以去提 issue
zckevin
2022-07-20 15:59:14 +08:00
不得不说 ServiceWorker 这一套东西使用体验真的非常难受,很难理解为什么会这样。
ChenYFan
2022-07-20 20:54:44 +08:00
@zckevin 哈?具体有啥难受能说一说吗
zckevin
2022-07-20 22:36:55 +08:00
@ChenYFan 纯主观感知,之前用 ServiceWorker 总感觉用的时候会突然卡 /顿挫那么一下,包括且不限于加载、刷新...尤其是和正常 /普通的网页对比起来。不过你这个网站似乎没有这种感受,也许是我之前的错觉?或者是 Chrome 更新了?已 Star ,有空研究起来。
ChenYFan
2022-07-21 08:14:40 +08:00
@zckevin 唔,使用了 ServiceWorker 或 workbox 通常会存在 缓存无限填充不删除、一瞬间缓存过多文件或者重安装假死的问题,这个是网上泛滥的教程里面都没解决的问题。我博客的 ChenBlogHelper 和 ClientWorker 都对此进行了优化,缓存重填充和按请求填充的方式能够很好解决这些问题。目前我博客缓存占用保持在 10M-200M 之间,相较于动辄 2G-5G 的缓存已经好了不少

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/865860

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX