1

这是理论上的问题。

Twitter 保留用户个人资料图片如下:

https://twimg0-a.akamaihd.net/profile_images/2044921128/finals_normal.png

无法想象他们有一个包含 2044921128 个目录的服务器(例如)。也许这个 URL 是使用创建的mod_rewrite

那么如何存储海量的用户图片呢?如何完成此方案:

  1. 用户选择和 PHP 脚本上传应该是他的个人资料图片的图像。
  2. PHP 脚本重命名它,设置 PATH 以存储此图像,移动它,最后将此路径添加到数据库以供进一步使用。

那么 PATH 必须是什么样子?

4

2 回答 2

1

没有什么说 Akamai(根据您的 URL 为 Twitter 存储图片)实际上将文件存储在目录结构中。它们完全有可能存储在内存中(由目录结构支持)、数据库(SQL / NoSQL)或 Akamai 认为有效的任何其他存储机制。

您可以路由以开头的 URL 的所有请求

https://yourService.com/profile_images/

到您选择的 PHP 脚本,然后解析 URL 的其余部分以确定正在请求的图像并根据解析的 URL 从您想要的任何存储机制(可能是数据库)中存储/检索。

这是一篇简短的博客文章,展示了使用 mod_rewrite 的一种方法

http://www.phpaddiction.com/tags/axis/url-routing-with-php-part-one/

于 2012-08-14T17:53:29.443 回答
1

大多数操作系统不鼓励在单个目录中包含超过 1024 个目录/文件,因为上面的任何数字都会缓慢地扫描和定位其中的特定资源,因此我认为可以安全地认为 akamai 在 profile_images 中不会有 2044921128 个目录!

它要么是在 profile_images 中生成的特殊唯一标识符号,要么是 url 路由中的众多方法之一,可用于定位资源。无论如何,我认为它不会对应于目录的数量..

于 2012-08-14T18:02:14.130 回答