我正在构建一个最终将包含大量图像的 Web 应用程序。这些图像需要在整个站点以不同的格式显示。这两种解决方案的优缺点是什么:
- 上传图片时存储各种版本的图片(例如拇指、小、中、大、超大)
- 通过 URL 调整图像大小 - 例如 /Content/Image/1?height=300
你怎么看?
编辑: 我很难接受一个答案而不是另一个答案,因此对于阅读此 q/a 的任何人,请花时间阅读这两个答案,因为接受的答案是通过抛硬币选择的:) 他们都是平等的好的。
我正在构建一个最终将包含大量图像的 Web 应用程序。这些图像需要在整个站点以不同的格式显示。这两种解决方案的优缺点是什么:
你怎么看?
编辑: 我很难接受一个答案而不是另一个答案,因此对于阅读此 q/a 的任何人,请花时间阅读这两个答案,因为接受的答案是通过抛硬币选择的:) 他们都是平等的好的。
如果我看一下维基媒体,它们会采用某种组合。
您可以通过参数定义大小,并且在第一步中,他们会查看这样的文件是否存在,如果不存在,则动态创建它并将其保存以供下一个请求。
看完你的评论。
这个问题几乎每次都会出现:我是优化速度还是优化尺寸?这是您必须为自己和您的具体问题做出的决定。
也许您可以实施一些额外的检查,例如如果特定大小的请求超过 x 次,则将其存储在磁盘上,或者删除所有未收到时间跨度为 y 的请求的存储图像。
不可避免地,任何基于参数提供动态大小的东西都将允许最终用户在服务器上引起合理(“可能比平常多”)数量的 CPU 活动,这对您来说可能是个问题,具体取决于您正在尝试的内容实现。正如 Oliver 所建议的,缓存生成的图像将有助于避免重复执行相同的工作,并且绝对应该成为任何动态解决方案的一部分。
我认为您需要考虑动态调整大小的重要性。在每种情况下,我处理过的预定义尺寸(您的拇指、小、中、大、非常大)都运行良好。同样的缓存考虑也适用,但创建大量图像的可能性要小得多。上传图像时,我倾向于创建各种图像大小,但如果尚未创建,则按需创建解决方案同样适用。