PHP / JS-动态创建缩略图或者存储为文件

时间:2020-03-06 14:26:57  来源:igfitidea点击:

对于图像托管Web应用程序:

对于我存储的图像,使用PHP(或者其他任何一种)动态创建缩略图是否可行,还是应该将1个或者更多不同大小的缩略图保存到磁盘上并加载它们?

任何帮助表示赞赏。

解决方案

查看gd库和imagemagick

缓存缩略图会更好。即时生成它们会对系统造成很大的负担。

将缩略图保存到磁盘。图像处理会占用大量资源,并且取决于图像的大小,可能会超过php默认允许的内存限制。如果我们拥有自己的服务器并且仅运行应用程序,则不必担心,但是调整图像大小仍然需要大量的CPU能力和内存。如果我们仍在考虑即时创建缩略图,则无需在第一个请求时进行太多更改,而是从源文件创建缩略图,将其保存到磁盘上,并且在随后的请求中,只需从磁盘上读取即可。

这取决于站点的使用模式,但是,基本上,我们希望查看每个图像多少次?

对于缩略图,它们很可能会存在一段时间(图像上传一次且从未更改,因此缩略图也不会更改),因此在上传完整图像时通常值得生​​成并存储起来以备后用。除非该站点完全死机,否则在它们的整个生命周期内将对其进行多次(数百或者数千次)查看,而如今的磁盘比延迟要便宜得多。当然,随着服务器负载的增加,这也变得更加重要。

相反,对于每小时更新一次(如不经常)更新的股票图表来说,我们最好动态地创建它们,以避免浪费CPU时间来不断生成图像,用户将永远看到。

或者,如果我们想花哨的话,可以通过以下方式进行优化:处理任何一种访问模式:在第一次需要图像时即时生成图像,然后再显示预先生成的图像,直到更改产生的数据为止,此时,我们将其删除,以便下次需要时可以重新生成它。但这对于IMO之类的缩略图之类的静态内容来说是过大的杀伤力。

我使用phpThumb,因为这是两全其美的方法。我们可以即时创建缩略图,但会自动缓存图像以加快将来的请求。它围绕GD和ImageMagick库创建了一个不错的包装器。值得一看!