title: Django easy-thumbnails vs sorl-thumbnail differences
body: <p>I've been reading about and trying various thumbnailing apps for Django. These are the requirements:</p>
  
  <ul>
  <li><p>All generated thumbnails must be saved in a S3 bucket separate from the original images, i.e. separate storage class</p></li>
  <li><p>When the image instance is deleted, the original image file along with all generated thumbnails must be delete as well</p></li>
  <li><p>Minimize expensive inefficiencies, ex. Fetching the url of a thumbnail to serialize in DRF shouldn't look in S3 bucket to see if it exists every time, etc.</p></li>
  </ul>
  
  <p>VersatileImageField fails the first requirement. ImageKit fails the second requirement. The third requirement is where I'm most confused; I'm trying to inform myself on best practices but the information is fragmented and I'm not confident in making a decision based on what I've learned so far.</p>
  
  <p>From what I've read, my impression is that the most efficient behavior would be as follows:</p>
  
  <ul>
  <li>generate the thumbnail immediately upon save and assume it always exists</li>
  <li>to access thumbnail, generate the URL based on the original image's filename and thumbnail dimensions/quality, since we know it definitely exists</li>
  <li>post_delete will delete all thumbnails and original file</li>
  </ul>
  
  <p>I'd be most interested in learning about the differences in the approaches that easy-thumbnails and sorl-thumbnail take (if they align with the process I very briefly outlined above or if they have something even more efficient), and the advantages/disadvantages in each of their methodologies.</p>