我的具体情况
物业管理网站,用户可以上传照片和租赁文件。对于每个公寓单元,可能有 4 张照片,因此系统中的照片数量不会过多。
对于照片,将有每张的缩略图。
我的问题
我的第一要务是性能。对于最终用户,我想尽可能快地加载页面并显示图像。
我应该将图像存储在数据库或文件系统中,还是无关紧要?我需要缓存任何东西吗?
提前致谢!
我的具体情况
物业管理网站,用户可以上传照片和租赁文件。对于每个公寓单元,可能有 4 张照片,因此系统中的照片数量不会过多。
对于照片,将有每张的缩略图。
我的问题
我的第一要务是性能。对于最终用户,我想尽可能快地加载页面并显示图像。
我应该将图像存储在数据库或文件系统中,还是无关紧要?我需要缓存任何东西吗?
提前致谢!
尽管一切都有例外,但一般情况下,将图像存储在文件系统中是最好的选择。您可以轻松地为图像提供缓存服务,无需担心额外的代码来处理图像处理,如果需要,您可以通过标准的图像编辑方法轻松地对图像进行维护。
听起来您的商业模式很适合这种情况。
文件系统。没有比赛。当您将数据存储在数据库中时,数据必须经过更多层。
缓存编辑:如果您想在用户上传文件时缓存文件以确保操作尽快完成,则将其直接转储到磁盘(即文件系统)几乎是尽可能快的。只要文件不是太大并且您没有太多并发用户,您可以将文件“缓存”在内存中,返回给用户,然后保存到磁盘。老实说,我不会打扰。
如果您在上传文件后在网络上提供文件并希望缓存以提高性能,文件系统仍然是最佳选择。您将从您的网络服务器免费获得缓存(可能需要调整一两个设置)。如果文件在数据库中,您将不会得到这个。
毕竟,听起来您永远不应该将文件存储在数据库中。并非如此,您只需要一个充分的理由这样做。
绝对将您的图像存储在文件系统上。人们在考虑这些类型的事情时没有考虑到的一个问题是臃肿。将图像作为二进制 blob 填充到数据库中是一种快速膨胀数据库的方法。大型数据库带来更高的硬件要求、更困难的复制和备份要求等。将图像粘贴在文件系统上意味着您可以使用许多现有工具轻松简单地备份/复制它们。文件系统的存储空间也比数据库更容易增加。
评论 Sheepy 的回答。
通常,当文件大小小于 256 KB 时,在 SQL 中存储文件更好,大于 1 兆字节时更值得。因此,在 256-1024 KB 之间,它取决于几个因素。阅读本文以了解有关使用 SQL 或文件系统的原因的更多信息。
在某些操作上,数据库可能比文件系统快,但加载一个明确识别的数据块 100 KB 不是其中之一。
此外,一个好的前端网络服务器(如 nginx)比任何你必须编写的从数据库读取 blob 的 webapp 层都要快得多。在一些测试中,对于中型文件(如大 HTML 或中型图像)的原始数据服务,nginx 与 memcached 大致相当。
去FS。没有比赛。