这个思想实验探讨了利用Go的模块系统进行Ruby包管理,从而实现令人惊讶的供应链完整性。通过将Ruby gems视为Go模块——在将`GOPATH`设置为Ruby加载路径后使用`go get`来获取它们——Ruby可以利用Go去中心化、版本化的文件系统布局和安全特性。 Go的导入路径约定(例如`github.com/rails/rails`)具有自描述性,并避免了对像RubyGems这样的中央注册表的依赖。至关重要的是,Go的代理(`proxy.golang.org`)会缓存模块,而`sum.golang.org`会为每个版本创建永久的、防篡改的密码学哈希日志。这提供了RubyGems所缺乏的完整性保证。 虽然这听起来很荒谬,但这个“黑客”展示了共享基础设施的潜力。一个概念验证的“go-bundler”表明依赖关系解析基本没有改变,只有获取过程外包给了Go。然而,仍然存在挑战——特别是与原生扩展和Go的文件系统特性有关。最终,这个实验强调了一个内容寻址、透明度日志分发层的优势,该层可能可用于多个软件包生态系统,即使将其改造到现有语言上是不切实际的。
## Cloudflare:互联网用户的双刃剑
Cloudflare 为网站所有者提供便捷的免费服务套件——CDN、DNS 和基本安全,因此广受欢迎。虽然对于发达国家(美国、加拿大、欧洲)的用户来说通常比较稳定,但对于东南亚等地区的用户来说,体验却大不相同。
作者详细描述了由 Cloudflare 的安全功能触发的频繁且不必要的 reCAPTCHA 提示,影响了多个 ISP 跨越数百个 IP 的测试。这给用户带来了令人沮丧的体验,尤其是在 Cloudflare 被广泛采用的情况下。
除了持续的 CAPTCHA 之外,Cloudflare 数据中心在全球的不均衡分布也导致了问题。当较近的节点出现故障(即使是维护)时,流量并不总是被有效地重新路由,*增加*延迟,并可能导致网站崩溃——就像 Reddit 和 StackExchange 等网站在一次持续 4-5 小时的故障期间所经历的那样。
作者认为,免费服务的便利性不应超过这些负面影响,建议网站所有者优先进行核心优化,然后再依赖 CDN,并仔细考虑收益是否大于对大量互联网用户造成的潜在干扰。