【问题标题】:Resizing images on the fly, or storing different sizes on disk?即时调整图像大小,或在磁盘上存储不同大小?
【发布时间】:2015-12-06 13:56:45
【问题描述】:

我正在构建一个最终将包含大量图像的 Web 应用程序。这些图像需要在整个站点以不同的格式显示。这两种解决方案的优缺点是什么:

  1. 上传时存储图片的各种版本(例如拇指、小、中、大、非常大)
  2. 通过 URL 调整图像大小 - 例如/Content/Image/1?height=300

你怎么看?

编辑: 我很难接受一个答案而不是另一个答案,因此对于阅读此 q/a 的任何人,请花点时间阅读两个答案,因为接受的答案是通过掷硬币选择的:) 它们都同样好。

【问题讨论】:

  • 我想补充一点,如果您正在动态调整大小以使用 asp.net 服务器控件或找到某种方式来确定服务器端的大小而不是查询字符串。

标签: image performance web image-resizing


【解决方案1】:

如果我看一下维基媒体,它们会采用某种组合。

您可以通过参数定义大小,在第一步中,他们会查看这样的文件是否存在,如果不存在,则动态创建它并将其保存以供下一个请求。

更新

看完你的评论。

几乎每次都会出现这个问题:我是优化速度还是优化尺寸?这是您必须为自己和具体问题做出的决定。

也许您可以实施一些额外的检查,例如如果特定大小的请求超过 x 次,则将其存储在磁盘上,或者删除所有在 y 时间跨度内未收到请求的存储图像。

【讨论】:

  • 我不会称其为中间方式,我会称其为组合.. 现在突然间我们将许多不同大小的存储到磁盘。这很容易通过运行一个脚本来请求一大堆不同大小的图像,从而将一堆图像存储到我的存储中 - 可能会填满我的托管服务提供商的配额......
【解决方案2】:

不可避免地,任何基于参数提供动态大小的东西都将允许最终用户在服务器上引起合理(“可能比平常”更多)的 CPU 活动量,这对您来说可能是个问题,具体取决于什么你正在努力实现。正如 Oliver 所建议的,缓存生成的图像将有助于避免重复执行相同的工作,并且绝对应该成为任何动态解决方案的一部分。

我认为您需要考虑动态调整大小的重要性。在每种情况下,我处理的预定义尺寸(您的拇指、小、中、大、非常大)都运行良好。同样的缓存考虑也适用,但创建大量图像的可能性要小得多。在上传图片时,我倾向于创建各种尺寸的图片,但如果尚未创建,则按需创建解决方案同样适用。

【讨论】:

    猜你喜欢
    • 2010-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-11
    • 1970-01-01
    • 1970-01-01
    • 2017-12-22
    • 1970-01-01
    相关资源
    最近更新 更多