【问题标题】:Best way to store and fetch image bytes?存储和获取图像字节的最佳方法?
【发布时间】:2021-10-21 11:11:33
【问题描述】:

我的初创公司有一个案例,我需要尽快以字节为单位获取图像。

目前我将图像存储在 Azure 存储中,然后我在运行时获取它们并将它们作为字节缓存到我的数据库中。在未来的请求中,这些字节将直接从数据库中获取。从数据库中获取字节要快得多,但是随着时间的推移,它会累积起来,现在我的数据库存储已使用了 80%。

我的数据库也在 Azure 上,保留更大的大小会很昂贵,所以我正在寻找一种更便宜的方法来实现这一点。

【问题讨论】:

  • “获取图像以字节为单位”是什么意思?特别是“以字节为单位”部分?你的意思是你只需要获取图像的一部分吗?还是整张图?
  • @Schwern 整个图像,但将用作字节。我的意思是我不需要是 .png 或用作任何图像类型
  • 这是一个网络服务器吗?
  • 图片有多大?恕我直言,使用数据库缓存 blob 存储数据违背了在 blob 存储中存储图像的全部目的。
  • @Schwern 是的

标签: azure asp.net-core storage


【解决方案1】:

不要在数据库中缓存大文件;数据库速度慢,存储成本高,而且资源有限。将它们缓存在磁盘上;磁盘相对又快又便宜。仅将缓存图像的路径存储在数据库中。

不要在您的应用程序中打开文件,然后将其流式传输给用户;让您的服务器直接从文件中提供图像。这将更快并且使用更少的资源;您的服务器非常擅长流式传输文件。有可能serve the files directly from Azure Storage,那你就不需要缓存了。

确保在您的回复中正确设置了cache headers。然后请求可以使用缓存的版本,让您完全不必重新提供图像。

您可能没有持久的文件存储,这很好,它是一个缓存,它可以消失并重新填充。您确实需要为所有进程提供相同的文件存储。例如,Heroku's ephemeral file system 不能用作文件缓存。你需要一些其他的共享文件存储。

【讨论】:

  • 方法是使用 DownloadToByteArray 从 Azure 存储直接获取字节。我正在使用图像链接下载数据,而且速度很慢。感谢您的帮助
猜你喜欢
  • 1970-01-01
  • 2011-01-27
  • 2013-05-23
  • 1970-01-01
  • 2012-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多