序言:我正在构建一种 CMS/社交网络服务,它将托管许多图像。
我打算使用 Eucalyptus/Amazon S3 来存储图像,并且想知道 Tumblr、Twitter 等网站使用的看似随机的文件名的重要性
31.media.tumblr.com/d6ba16060ea4dfd3c67ccf4dbc91df92/tumblr_n164cyLkNl1qkdb42o1_500.jpg
和
pbs.twimg.com/media/Bg7B_kBCMAABYfF.jpg
他们如何生成这些字符串,与仅为每个文件名递增一个整数相比,这会带来什么好处?也许只是随机字符?也许对整数进行哈希处理?
谢谢!
最佳答案
Twitter 使用一种称为“雪花”的编码方法。有github source
基本格式编码时间戳(42 位)、数据中心 ID(5 位)和工作人员 ID(数据中心的计算机;5 位)
对于推文 ID,他们将值写入长十进制数。推文 ID“508285932617736192”是十六进制值“070DCB5CDA022000”。前 42 位是时间戳(time_t 值为 070DCB5C + 纪元 1291675244)。接下来的五位是数据中心(在本例中为“1”),接下来的五位是工作人员 ID(“2”)。
对于图像,它们执行完全相同的操作,但使用 Base64 编码(遵循 URL 编码的 RFC 4648 标准;最后两个 Base64 字符是连字符和下划线)。
BwjA8nCCcAAy5zA.jpg 解码为 2014-09-02 20:23:58 GMT,数据中心 #1,工作人员 #7
关于twitter - 图片URL命名方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21919766/