2013-01-17 28 views
0

我想实现简单的图片网址,就像Facebook已经做到了。简单的图片网址 - 复杂的背景

,如果你检查http://developers.facebook.com/docs/reference/api/using-pictures/

,你会看到,他们用照片,甚至和应用,只有ID,但事件,应用程序和有照片的证件都是三种不同的表的ID。

FB图片:http://graph.facebook.com/331218348435/picture

他们怎么知道哪个ID是属于哪个类别(事件,应用程序或照片)?

回答

0

Facebook中的每个对象都可以拥有自己的唯一标识符。意思是,例如,如果FB组的ID为42,那么应用程序,组或任何其他对象不能具有相同的ID。这可以让Web应用程序将ID直接映射到图片的URL。

Facebook正在使用一个可能用信息编码的64位标识符。因此,我不认为你永远不会看到小一个id为42的信息可以在编码方式如下:

64 bits total 
1st 16 bits = Shard ID (where is the object is stored) 
2nd 16 bits = Type ID (app, group, person) 
Remaining 32 bits = Local unique ID (incremental id for example) 

使用一些逐位逻辑可以从标识中提取的类型。尽管如果您有ID到图片URL的直接1对1映射,它可能不是必需的。

我实际上并不知道FB的后端是如何构建的。以上只是一个示例实现。如果你有32位id的表,你仍然可以用一种编码类型转换为64位,并且不管对象类型如何,所有标识符都是唯一的。

这可能是矫枉过正的,特别是如果你有一个现有的生产结构。我只是试图解释如何做到这一点,以及Facebook如何做到这一点。