今天在问 Gemini,为什么同样是用的 Cloudflare CDN,别人在国内的解析速度就是比我快。AI 列了很多原因,有可能人家是付费玩家,使用了优选IP,或者是智能DNS。除此之外,还会有一些设置的问题。例如:
在 Gemini 的指导下,我开启了0-RTT,最低TLS版本设为了1.2,开启了Early Hints。最后还配置了缓存规则,让 Cloudflare 缓存 Cache Everything(缓存所有内容)。 然后问题就来了,我突然发现访问网站首页时会蹦出人机验证,而且不管怎么弄,就一直卡在人机验证这了。 ![]() 因为我发现只有首页弹,内页不弹。把这个情况告诉 Geimini 之后,它一下就给我找到了原因,有点好笑。 问题的根源在于我开启了 Cloudflare 的 Cache Everything,并且配置了缓存规则。但是 CF 的缓存有点笨,它把所有页面(只要有人访问的页面)都缓存下来了。然后好巧不巧,在我清除了所有的缓存之后,又在我访问自己的网站首页之前,Cloudflare 恰好拦截过某次访问,生成了一个“验证页面”。然后,我设置的 Cloudflare 页面规则 (Page Rule) 把这个“验证页面”当成正常的首页 HTML 给缓存了。 结果就是:之后访客访问首页,Cloudflare 根本没去检查他们是不是机器人,而是直接从缓存里把那个“旧的验证页面”甩给了访客。访客点击验证,提交给服务器,服务器一脸懵逼(因为没有发起新的验证请求),导致无限循环。 解决办法:直接删掉 Cloudflare 的缓存规则,不要它缓存 HTML,而把这个任务交给 LiteSpeed。 因为 Cloudflare 的缓存有可能会把我登录之后的页面缓存下来。而且还容易造成更新不同步(发了新文章,LiteSpeed 插件清除了服务器缓存,但 Cloudflare 边缘节点还存着旧页面。用户看到的依然是旧网站。) 所以最终我是在 LiteSpeed 的设置中连接了 Cloudflare 的 API,这样以后发布新文章、修改 CSS 或点击 LiteSpeed 的“清除缓存”时,插件会自动发送指令给 Cloudflare,让其把旧缓存也顺便清掉。 |