我什么时候应该创建图像的缩略图?

时间:2016-01-30 16:55:25

标签: php image performance web-services image-processing

我正在处理一个项目。并且有功能用户可以上传图像。该图像将用于不同页面的网站,大小不同(例如:200 * 300,360 * 520,700 * 1000)。

我可以通过两种方式创建缩略图

  1. 上传图片时,创建不同尺寸和存储的缩略图。

  2. 在将图像src显示到某些服务器端脚本时,从那里重新调整图像大小并打印图像,而不是显示。

  3. 这是正确的方法吗?如果我使用第一种方法,我认为磁盘空间会非常快,第二种方法有问题吗?

1 个答案:

答案 0 :(得分:0)

方法1的优点是您不会同时冒两次同一图像的风险,并且您可以快速提供版本以显示给您的用户。

但是如果预先调整图像大小,为什么你的磁盘会快速充满?如果你把它们调整到每个可能的大小,就会发生这种情况,所以这不是一个好主意。

方法2更灵活。您只需要一个给定大小的图像,您的脚本将动态生成它。当然,这有点慢,但您可以缓存已调整大小的图像,以便访问者快速获取图像,除非他们是第一个请求特定大小的图像。

我的建议: 如果您知道在网站上使用的尺寸,可以使用这些尺寸在早期阶段调整图像尺寸。您甚至可以在网站上使用一组预定义的图像尺寸进行配置,您可以在网站上使用这些尺寸,并使用相同的配置在上传图像时缩放图像。这有一些优点:

当访问者浏览您的网站时,拥有一组有限的大小将增加访问缓存的机会。例如,如果您在X详细信息页面中显示X的图片,并且概览页面包含X,搜索结果等,并且每个页面使用的大小略有不同,则会浪费磁盘空间和带宽。

并且,如果磁盘大小是个问题,那么使用有限数量的大小也会限制这些映像的缓存版本占用的磁盘空间。

此外,如果您更改或添加维度,则可以立即预生成该大小的所有图像,以便访问者可以立即从缓存版本中受益。 当然,如果您删除或更改一个维度,也可以更轻松地清除缓存中不再包含在列表中的维度的图像。

如果您选择此方法,则可以非常轻松地实现方法1并预先缓存所有内容,但即使您选择方法2(如果仅作为后备,如果缓存版本不存在),那么仍然是会有好处。