- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个简单的用户评论系统。这些可以带有图像。目前我将用户上传的图像存储在一个文件夹中。我不会为图像向数据库写入任何内容,非常简单,我使用评论 id 命名图像文件(每个评论只允许一张图像)并将它们全部存储在一个文件夹中:
move_uploaded_file($upload_pic,'images/'.mysql_insert_id().'.jpg');
//please note I am also upgrading to mysqli
然后,在从数据库检索评论数据时,我正在检查 file_exists() 并可能显示带有评论的完整图像。
if (file_exists('images/'.$fid.'.jpg')) echo '<img width="576" src="images/'.$fid.'.jpg">';
现在我想对其进行更改,以便能够存储和显示每个帖子更多的图像(仍然限制为 4 个),并且还有缩略图。
对于这样简单的系统,将所有文件引用存储在数据库中的单独表中是否更快,或者增强与评论 ID 相关的文件命名?
XXXXXX-Y.jpg
并使用glob("images/".round(XXXXXX/1000)."检索。/XXXXXX-*.jpg")
,一个文件夹中最多有 1000 个文件。 (目前,过去 10 年中 105,000 篇帖子中包含 6,500 张图片)对我来说,文件命名似乎更简单,因为我不需要存储与图像相关的任何附加信息,但另一方面,似乎大多数人都使用数据库。并希望专注于性能更好的方式。
最佳答案
根据我在房地产网站工作的经验,检查文件是否存在非常昂贵。
因此,如果数据库中有一个包含文件名的表,那么显示速度会快得多。您不会每次都显式检查所有四个文件的 file_exists,只需在 db 中显示该注释的图像次数即可显示图像标签。就像如果您有 1 个评论图像,您将不需要检查其他 3 个图像,您只从数据库中找到了 1 个,因此您只需立即显示它。
对于命名,请保持简单,例如使用:
3673-1-originalfilename.jpg
3673-2-originalfilename.jpg
3673-3-originalfilename.jpg
遵循以下模式
"commentid"-"count"-"original-filename"."extension"
不用说,如果您还必须喜欢缩略图文件名或文件大小等,您可以在数据库中存储更多有关图像的数据,并且您可以根据需要存储任意数量的图像以进行评论。
希望这有帮助!
关于php - 引用用户上传的文件 - 数据库还是文件名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26843308/
我有以下正则表达式 /[a-zA-Z0-9_-]/ 当字符串只包含从 a 到z 大小写、数字、_ 和 -。 我的代码有什么问题? 能否请您向我提供一个简短的解释和有关如何修复它的代码示例? //var
我是一名优秀的程序员,十分优秀!