2

我发现大部分用户头像图片文件的url都很长,并且结合了很多数据。

例如,脸书:

https://fbcdn-profile-a.akamaihd.net/hprofile-ak-ash4/371533_1567227XXX_1135411XXX_q.jpg

我们知道1135411XXX用户 id 和q文件大小,但是3715331567227XXX代表什么?

其他:

领英http://m3.licdn.com/mpr/mpr/shrink_60_60/p/4/000/165/0e4/3b2dcXX.jpg

棒棒哒http://24.media.tumblr.com/avatar_4de452cedeXX_64.png

我们可以通过用户 id 来命名文件名,它看起来更短更容易,如下所示:

<img src="http://domain.com/images/avatar/' . $user_id . '.jpg"/>

但为什么他们让网址如此长而复杂?我没有考虑什么样的潜在问题?

4

4 回答 4

1

它们是复杂的系统,并且可能对头像图片有很多用途。也许在不同的地方他们需要不同的尺寸。也许他们需要一个只能从他们的网站访问的网址。

也许他们需要一个唯一生成的 url,以便可以从服务器静态提供文件,从而减少负载。

Twitter 的 url 看起来很简单,真的。有 cdn 域,然后avatar_是唯一的 id,然后是图像大小(即_64)。

Linkedin 似乎在 url 中有调整大小的参数,以启用不同的大小,然后是一些我不知道的其他参数,然后又是一个唯一的 id。

Facebook 有三个唯一标识来生成文件名,我认为他们会再次这样做,以便他们可以快速提供静态文件。我猜其中一个是专辑 ID,一个是个人资料 ID,最后一个可能是图片 ID。

于 2012-09-07T12:40:01.510 回答
1

可能有多种原因:

  1. 反矿工
  2. 安全槽默默无闻
  3. 生成的 UID
  4. 大小和像素等额外信息

想象一下,如果我知道您使用 5 个字符 ID 会发生什么,我将开始在您的服务器上加载所有可能的 ID,并完全从您的用户那里挖掘所有图片。

你会有很多流量。您的用户会起诉您不保护他们的隐私。

例如,为用户“userone”的这种路径提供一个哈希算法是很好的,哈希将是“1236662231”并将其用作路径,这样其他人就很难理解实际路径并且不会挖掘您的网站信息和图片。

于 2012-09-07T12:41:02.687 回答
0

保存照片时,通常会为其生成一个 GUID。

GUID 由数字、字母和符号组成。它们通常足够长,以便可以存储足够数量的图像。它们也是独一无二的,因此图像大小和用户 ID 是不够的。

GUID 通常是根据上传时间生成的。与用户 ID 一起,这保证了唯一性。

于 2012-09-07T12:35:50.543 回答
0
  • url 可能有图片 ID 或专辑 ID 或用户 ID,或者可能是时间戳(在 int 中,以便图像不会以相同的名称缓存)
  • 该域很复杂,因为 Facebook 的内容交付网络是 akamaihd,因此对其他人可能有不同...
于 2012-09-07T12:38:56.337 回答