shendaowu

为了在 CF 上实现低延迟的效果,打开页面后每半分钟发送一个请求对赛博菩萨有多大伤害?我不想遭报应

  •  
  •   shendaowu · 1 day ago · 632 views

    我预计我的网站不会有特别大的流量。我的网站基本都是静态页面,worker 也会用一些。但是就算没有 worker 也不影响一般使用。

    事情的起因是大陆访问免费版的 CF 很卡。然后我灵机一动想到了通过预载缓解延迟,我想做的网站的用户的访问很可能很好预测。基本就是个类似游戏的网站,我估计大部分用户都会一关一关顺序访问。试了一下效果果然很惊艳,除了首次访问都能做到瞬间打开。然后好像在让 AI 写的过程中了解到了 service worker ,使用了 SWR 策略之后效果一样,但是不用将某些文件设置成缓存时间很长了。提醒一下用户一般刷新两次才能获取到最新的内容就行了。

    然后好景不长。过了一段时间我发现隔了一段时间再访问会出现很高的延迟,而这个延迟好像是浏览器导致的。就是明明显示使用了缓存,但是有时候会卡一两秒。然后进一步的测试我发现这好像是 edge 的问题,chrome 一直都是瞬间打开。我问了微软的客服,客服的意思大概是 chrome 那样做有副作用还是什么的,说是 edge 没有那么激进。

    这个好像也不是 CF 的问题。有人说可能是 TTL 的问题,毕竟 CF 托管的域名的 TTL 就是五分钟。我试了一个域名 TTL 更大的建站的网站,还是一样。

    然后为了让网站在 edge 上也比较流畅就只好苦一苦赛博菩萨了。我试了一下在网页里放一个不可见的框架然后每半分钟刷新一下那个框架效果还算不错。五分钟之后在浏览器收藏夹里里点击网站对应的按钮打开很快。框架里面就是一个很简单的属于我的网站的页面。之前我试过两分钟刷新一次,偶尔还是会卡。半分钟目前还没发现卡顿。我试了十次。不过如果我的网站所在的选项卡不是选中状态的话,好像还是可能出现高延迟。我就不要自行车了。

    另外我这个方法简单说是每隔半分钟刷新在 A 页面中的框架中的页面 B ,然后再页面 A 开着的情况下每隔五分钟访问页面 C 也会获得低延迟的效果。我试了六次。我估计测试到这里应该就跑通了,其他的页面应该同理了。

    谁有没有更好的方法?

    我特地查了一下,伤佛报应很大,估计菩萨也差不多。很害怕。我很迷信。手动狗头。

    shendaowu
        1
    shendaowu  
    OP
       1h 24m ago
    我真是个天才,我发现个目前没发现问题的很可能能减少对菩萨的伤害的方法。不过也只是减少而已,没有将伤害降到最低。

    方法就是用 service worker 直接返回框架中的页面的内容。

    我看了 CF 的 DNS 请求分析,发现就算十秒钟刷新一下那个框架,DNS 请求也是每五分钟十次。这个十次可能有问题,我问了一下 deepseek ,它说可能不准。我估计大部分请求都在距离用户最近的 DNS 服务器处理。懒,不想去确认。理论上用 service worker 也不会去 CF 请求内容。我没找到 CF 上检测静态页面请求的地方。我感觉应该已经接近伤害最低了。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5677 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 08:33 · PVG 16:33 · LAX 01:33 · JFK 04:33
    ♥ Do have faith in what you're doing.