Rails3-最好创建更多的缩略图,或者只创建一个缩略图并通过CSS调整大小



我正在构建小商店应用程序,现在正在考虑更快的方法,如何上传图像-我需要4种尺寸的图像。第一个想法-从上传创建4个缩略图,仅此而已-可能是最简单的方法,但我担心的是-通过上传创建4种尺寸可能需要很多时间。。。这是我不喜欢的,我想避免它。

第二个想法是上传图像-例如,尺寸为300x300,当我需要在商店中显示这张图像时,我只需在HTML和CSS中设置值:style=>'width:165px;'

你怎么看?什么是最好的变体?

我不认为这个问题与rails有关,而是一个更一般的问题。

通常情况下,您确实希望创建各种尺寸的图像,以供使用。在上传时创建四个大小的图像通常不会花那么多时间(我指的是上传一次图像,然后在此基础上在服务器端创建所需的图像)——至少如果你将其与用户下载最大大小图像的总时间进行比较,然后在他们只需要一个小缩略图的情况下动态调整图像大小。通常情况下,上传图像的情况并不常见。生成其他图像也可能推迟到夜间运行的计划作业,这样就不会影响管理方面的用户体验。

也就是说,如果你的用户每次都必须下载最大的图像,那么它无论如何都会在缓存中,如果你在需要的地方使用css以较小的大小调整它的大小,就不会产生额外的开销。在这种情况下,我认为只使用最大的尺寸是可以的。通常,在大多数用例中,您可以避免使用最大尺寸的图像。

使用carrierwave gem管理上传。使用多个"版本"配置gem。

正如eis所建议的那样,处理图像并不是性能瓶颈,但如果您真的想获得灵感,请使用delayed_jobgem异步处理。

配置载波时,您还需要设置实际的处理器。我使用的是全面的ormagick,但你可以使用设置更简单的minimagick。carrierwave自述中有详细说明。对于rmagick/imagemagick,这里有一个线程涉及到这一点。

此外,正如eis所建议的,浏览器通常会可靠地缓存图像,而现在浏览器在动态调整图像大小方面做得很好,尽管通常情况下,处理器越好,结果越好,这就是我使用rmagick的原因。

最后一点需要注意的是,除非你能指定用户选择上传什么,否则你很可能需要至少处理一张图像。例如,有人可能会上传一张8000 X 6000像素的大图像,而几乎没有压缩。你不会想要提供那个图像,因为你的控制力较弱。一旦你遇到了设置图像处理的麻烦,再添加一些输出大小以适应各种显示上下文是一件微不足道的事情。

最新更新