我有兴趣了解为什么像 Twitter 和 Facebook 这样的许多服务都按照他们的方式命名他们的 CDN 文件。看着http://25.media.tumblr.com/tumblr_m6m6g57NgY1qdhfhho2_1280.jpg我有一些观察性问题:
- 他们是否使用多个子域(25.media、26.media 等)从单个域卸载 DNS 查询? storage.tumblr.com 似乎足以存储他们所有的图片,因为 S3 只有一个大桶的概念。
- 他们是否在文件名中插入散列字符串以防止从网络收集工具中进行连续遍历?这似乎是个好主意。获取文件名并在其后附加一些垃圾,对其进行哈希处理,并将该哈希值插入到 tumblr_XXXXXXXXXXXXXXXXXX_1280.jpg 文件名中。
最佳答案
浏览器对它们可以向单个域发出的并行请求的数量有限制,使用多个子域意味着更多的并行请求。请参阅:http://yuiblog.com/blog/2007/04/11/performance-research-part-4/
出于您描述的原因,他们可能正在使用看似随机的文件名。但更有可能的是,他们使用它来确保文件名的唯一性,并在文件更改时使缓存失效,从而确保所有用户看到的是最新版本。
关于architecture - Amazon S3 文件和路径命名架构决策,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11333482/