我正在为链接创建一个PHP缩略图应用。我正在考虑选择:
存储图片 - 由于我不希望每次用户共享相同的链接时都想创建新图像,我希望使用引用该网址的名称存储图像,
如果有人输入很长的网址,我也想避免使用太长的文件名。所以我在考虑散列网址,
但是md5()
是谁?或者我应该使用sha1()
(多8个字符= 40),
或者其他人是否更好地了解如何存储它?
只保存链接和图片链接 - 这会产生另一种选择 - 将其存储在数据库中或作为名称为>的文件存储如在1中那样。只包含链接?
感谢。
答案 0 :(得分:1)
创建虚拟文件系统时,我使用sha1()
,即使md5()
发生冲突的可能性很小,但成本也不高。
至于存储缩略图,我建议在创建后将它们保存到磁盘。检测到您已创建缩略图与首次请求的方法取决于您创建和存储缩略图的方式。
在我的一个应用程序中,用户使用SHA1哈希将我存储的文件上传到MySQL DB中的元数据文件系统。使用三个参数检索文件:file_id,width和height。我从DB中检索指定file_id的SHA1哈希,然后检查文件系统是否存在名为[hash] [width] [height]的文件。如果它不存在,那么我生成缩略图并提供它。如果它确实存在,那么这意味着我已经创建了这个大小的缩略图并且我提供了它。
由于我正在使用脚本按需生成/发送缩略图,我服务该文件的脚本会检查客户端的最后修改并告诉客户端使用其缓存版本,而不是花费带宽重新发送相同的图像。
答案 1 :(得分:0)
我建议您在文档根目录外使用网址,并使用脚本调用图像。如果用户在数据库中有关联的URL,则脚本将调用此URL。 E.g。
<img src="script.php" />