C# 存储多个尺寸的图像,还是只存储主图像并调整大小?

C# 存储多个尺寸的图像,还是只存储主图像并调整大小?,c#,asp.net-mvc-3,content-management-system,storage,C#,Asp.net Mvc 3,Content Management System,Storage,我正在开发一个CMS,我正在尝试找出一个REST风格的图像请求的常见做法。我有三种尺码,小号、中号和大号。我的想法是只存储完整的页面,然后编写一个函数,根据每个页面请求调整大小。这有明显的cpu成本。另一方面,我可以存储所有三种尺寸,只在上传时计算,这似乎浪费了空间 我的环境是一个内部网,因此请求相对较低,存储的图像数量较高。想法 注意:我意识到我不必太担心,因为这是内部网,任何一种解决方案都可以工作,只是想知道出于知识的考虑,哪种方案更可取。存储完整的数据,然后根据需要生成其他大小的数据并缓存

我正在开发一个CMS,我正在尝试找出一个REST风格的图像请求的常见做法。我有三种尺码,小号、中号和大号。我的想法是只存储完整的页面,然后编写一个函数,根据每个页面请求调整大小。这有明显的cpu成本。另一方面,我可以存储所有三种尺寸,只在上传时计算,这似乎浪费了空间

我的环境是一个内部网,因此请求相对较低,存储的图像数量较高。想法


注意:我意识到我不必太担心,因为这是内部网,任何一种解决方案都可以工作,只是想知道出于知识的考虑,哪种方案更可取。

存储完整的数据,然后根据需要生成其他大小的数据并缓存它们;页面处理在第一次请求时会稍微慢一点,但随后所有后续请求都会使用缓存版本。

因为您认为会存储很多图像而请求不多,所以我选择动态调整大小解决方案,因为听起来您已经知道存储空间将是更大的问题


如果您想玩得更开心,可以设置一个MRU(最近使用的)缓存,缓存n个最常请求的大小调整图像,但同样,如果请求数量少,这可能会有点过火,但仍然可能是一个有趣的项目!;)

REST和标准HTTP谓词的用法的关键点之一是它支持缓存;我认为这将支持动态调整大小的意图。不过,这实际上是一个在存储空间和请求时间计算之间进行权衡的问题。

如果系统负载不是问题(假设是低容量的intranet应用程序),我会选择存储完整大小的映像,并在运行时对其进行缩放。这样,如果您需要其他尺寸的图像,就不需要替换所有图像


但正如您上面所说的,了解折衷方案,并对系统负载、磁盘空间、需求变化的可能性等做出一些很好的估计。

另一个选择是维护已调整大小图像的缓存。把有空的端上来。如果它们不可用,则创建新的。删除一段时间未请求的图像


这将是CPU和存储问题之间的折衷。

您自己回答了这个问题,这是CPU空间的折衷。
你知道每种途径的成本,问问自己,哪种资源对你来说成本更高。

我喜欢。它工作得很好,因为大多数图像在制作的前3周后就再也看不到了。谢谢