我一直在阅读并尝试各种适用于 Django 的缩略图应用程序。这些是要求:
所有生成的缩略图都必须保存在与原始图像分开的 S3 存储桶中,即单独的存储类
删除图像实例时,必须同时删除原始图像文件以及所有生成的缩略图
尽量减少代价高昂的低效率,例如。获取要在 DRF 中序列化的缩略图的 url 不应该在 S3 存储桶中查看它是否每次都存在等。
VersatileImageField 未能满足第一个要求。ImageKit 未能满足第二个要求。第三个要求是我最困惑的地方;我试图让自己了解最佳实践,但信息是零散的,我没有信心根据迄今为止所学的知识做出决定。
根据我的阅读,我的印象是最有效的行为如下:
- 保存后立即生成缩略图并假设它始终存在
- 要访问缩略图,请根据原始图像的文件名和缩略图尺寸/质量生成 URL,因为我们知道它肯定存在
- post_delete 将删除所有缩略图和原始文件
我最感兴趣的是了解 easy-thumbnails 和 sorl-thumbnail 采用的方法的差异(如果它们与我在上面非常简要概述的过程一致,或者如果它们有更有效的方法),以及优点/缺点在他们的每一种方法中。