生成缩略图的最佳实践?

| 我正在创建一个社交网络,用户可以在其中上传他们的个人资料图像。 此图片将以其150/150像素尺寸在其个人资料页面中使用。 在首页(即用户活动供稿)中,我需要使用75/75像素的相同图像。 这样做的最佳实践是什么 动态调整图像大小(缩略图)。 在服务器中调整图像大小并保存。     
已邀请:
上载照片时,创建所需的缩略图集并另存为[image_name]缩略图[size_name] .jpg左右:
uploaded: file.jpg
medium: file_thumb_150x150.jpg
small: file_thumb_75x75.jpg
命名约定由您决定,但是通过快速方式,您可以轻松访问所需的数据。无需使用服务器在浏览器中即时生成或扩展。     
我已经在这个问题上研究了一段时间,并遇到了3种主要方法: 在上传时生成缩略图图像,作为后台处理。 通过主应用程序按需生成图像 使用URL作为API按需生成图像 每种方法都有其优点和缺点。 这种方法是限制性最大的方法,您必须预先了解缩略图的所有用途和大小,以便可以在上传后立即生成缩略图。主要优点是可以使用像nginx这样的服务器来有效地提供图像,就像其他静态资源一样。 Django有一个名为sorl-thumbnail的库,该库提供了一个模板标记,用于在需要时生成各种缩略图。它使用快速键/值存储来跟踪已生成的缩略图,并且如果检测到源图像已更改,则会自动使失效的图像失效。然后,template标签返回所生成图像的URL,可以直接从nginx提供该URL,而无需通过脚本层。比1更灵活,但是您不能(例如)使用JavaScript生成图像URL并期望它存在,这必须由网站的后端代码或模板来完成。 完全动态且灵活,您可以通过调整URL来获取所需图像的任何版本,Amazon像所有这些占位符图像生成网站一样使用此方法。可以用JavaScript生成URL,并做任何您想做的事情。该网站本身不需要任何缩略图层的知识,只需要几个帮助方法即可为您生成URL。但是,这显然是最消耗资源的处理方式,您需要确保您的体系结构可以处理负载。您需要使用书中的所有技巧来及时使缓存无效,避免对调整大小的脚本造成不必要的打击等。 我是第3种处理方式的忠实拥护者,我喜欢将图像生成与我的主要网站功能完全隔离,并且我喜欢相当大的灵活性,但是您需要了解配置时的操作您的服务器来处理它。     
我告诉你我做什么。我总是存储完整大小的图像,但是使用带前导零的数据库ID重命名它。第一次使用时,我将创建缩略图并将其存储在其他文件夹中,以供下次调用时使用。     
如果服务器空间和带宽是一个问题,则应考虑使用CDN。 亚马逊提供优质的服务,     

要回复问题请先登录注册