存储用户数据

时间:2016-03-21 23:54:20

标签: storage user-data

在查看Facebook等网站如何存储个人资料图片时,网址似乎使用随机生成的值。例如,Google的Facebook页面的个人资料图片页面包含以下网址:

https://scontent-lhr3-1.xx.fbcdn.net/hprofile-xft1/v/t1.0-1/p160x160/11990418_442606765926870_215300303224956260_n.png?oh=28cb5dd4717b7174eed44ca5279a2e37&oe=579938A8

然而,为什么不这样组织它:

https://scontent-lhr3-1.xx.fbcdn.net/{{ profile_id }}/50x50.png

显然,这在存储和简单性方面会更容易。我错过了什么吗?感谢。

5 个答案:

答案 0 :(得分:7)

像Facebook这样的公司有相当强烈的CDN。它们可能看起来像是随机生成的网址,但它们不是,每条路线都是有目的的,并按照这种方式进行处理。

如果您只是使用FTP连接到基本营销网站服务器,那么它们就不会像存储一样简单。虽然您可能将所有图像放在/ images文件夹中,但Facebook对此来说太复杂了。数十种不同类型的应用程序在全球范围内访问数百甚至数千个CDN和服务器。

如果您构建了一个Web应用程序,例如Ruby on Rails应用程序,并且您使用AWS(亚马逊网络服务)等服务,那么您也会遇到看起来像荒谬的网址。但它是架构内提供的快速交付网络的所有部分。每当你"推"您的应用程序直到服务器新的URL自动为每个唯一资源生成,css文件,JavaScript文件,图像文件等都是动态创建的。每次发布应用程序时,您都不必单独输入每个独特的URL,代码只是知道在哪里查找这些作为发布过程的一部分。

示例:您告诉Web应用程序查找

//= require jquery

并在标题中返回http://example.com/assets/jquery-eb3e278249152b5b5d5170b73d9dbf52.js?body=1

网址比应该更复杂并不重要,应用程序会识别它,并且这一切都很重要。

答案 1 :(得分:6)

简单地说,我认为它归结为两个主要原因:安全和缓存

安全性 - 添加这些长期不可预测的哈希会阻止其他人猜测照片网址,并且很难下载您不应该使用的照片。

如果我可以轻松猜出您的个人资料照片网址并下载它,即使您明确选择仅与朋友分享,也会发生什么情况。

缓存 - 通过为每张照片添加“随机”查询参数,您可以确保每个照片实例都有自己的网址。因此,您可以将照片长时间存储在浏览器的缓存中,因为无论何时用新照片替换它,新照片都会有一个新的URL,浏览器不会一直显示旧照片。

如果您要为每个用户的个人资料照片保留相同的网址(例如https://scontent-lhr3-1.xx.fbcdn.net/{{ profile_id }}/50x50.png),然后上传新照片,则可能会出现以下情况之一:

  • 如果您将照片长时间存储在浏览器的缓存中,浏览器会一直显示缓存版本(只要URL相同,缓存尚未过期,则无需重新下载图像)。
  • 相反,如果您只将图像保留在缓存中很短的时间,那么最终会更多地击中您的服务器,然后实际需要,增加负载并损害性能。


我希望这能澄清它。

答案 2 :(得分:3)

根据您的路线计划,您如何避免陌生人访问私人帐户的图片?哈希还会阻止机器人下载所有图片。

答案 3 :(得分:2)

我得到你的痛苦:-)我可能不会继续描述这个问题如何出现更多,而是让我谈一个解决方案。那么通常的代码在处理散列值或者甚至是base64ed值时看起来很难处理,但是用一个标识符来解释,它并不是很多!

我习惯在我们用来整理Facebook帖子的公司工作,使用Graph API获取其Insights对象并从中提取信息,以便在UI内轻松传递并发送回我们的Redis缓存存储区;一旦我们在TaffyDB中定义了一个数据结构,一个对象组织将会是什么样子,一切都是有意义的,因为它有能力从缩小的Javascript流的长垃圾查询流中查询有用的有限元 请参阅:http://www.taffydb.com/

答案 4 :(得分:0)

网址中的额外值对以下内容非常有用:

  • 跟踪访问权限。这就像当报纸将“&主页”与“& email”附加到文章URL时,因此他们的系统知道读者如何找到该页面。

  • 避免滥用并控制访问权限。想象一下,用户将一个小的,流行的色情图片加载到个人资料图片中。然后他们可以劫持CDN成为他们色情网站的免费网络主机。但是该代码在CDN内部用于限制视图的数量。