将通用URL路径映射到特定文件

时间:2011-09-03 12:51:30

标签: language-agnostic

我正在编写一个简单的图片托管服务,其中每个图片及其所有缩略图都应仅通过其名称提供,例如i.example.com/的 XXXXX.jpg 即可。这个问题是每个图像和每个缩略图都必须位于一个可能快速增长的目录(i.example.com的文档根目录)中。我希望每个图像都在每个用户的单独文件夹中。

由于我无法单独从URL确定哪个图像属于哪个用户,我认为我需要编写自己的脚本,该脚本向用户查询数据库并提供图像。这样做的问题是大量的数据库查询。在我的网站上,我有一个可以同时显示60张图片的图库,这样可以为每个访问者在图库中请求页面提供60个查询。

我可以使用memcached,但除非我将每个数据库查询结果保存到一个数组中,否则这只会用60个memcached查询替换60个数据库查询。

这对我来说似乎都不是最理想的,所以我想知道是否有更好的解决方案,或者我是否应该将每个图像放到一个目录中呢?

2 个答案:

答案 0 :(得分:3)

您可以使用第一个字母,然后使用第二个字母等来根据图像的名称对图像进行分区。例如,图片dog.jpg将存储在/path/to/images/d/o/dog.jpgcat.jpg /path/to/images/c/a/cat.jpg处。您的Web应用程序需要进行路径转换,但不需要命中数据库。如果两个人上传了具有相同名称的图像,则会出现问题。

答案 1 :(得分:0)

如果您希望在不同的人上传具有相同名称的图像时区分图像,则无法将所有图像放在一个目录中。当您想要上传图像并确保属于某个人的所有图像都进入个人目录时,您必须使用类似www.example.com/images/user_id/xxxxxxx.jpg;并且您必须确保所有用户都登录以提供其目录标识;这样,无论您是否正在访问数据库,user_id目录将为不同的人保持不同的身份。示例:user_id = 231的用户将拥有www.example.com/images/231/xxxxxx1.jpg(或www.example.com/images/portrait_231/xxxxxx1.jpg,如果您作为开发人员想要创建更多每个用户的一个子目录)。如果您仍然不明白我的意思,请发邮件给我@ ike_bullocks@yahoo.com:我已经在图像上工作了一年多了!