Use dedicated URLs for accessing file attachment image-based thumbnails.

Review Request #13870 — Created May 20, 2024 and submitted — Latest diff uploaded

Information

Review Board
release-7.x

Reviewers

We recently introduced a new URL for accessing the contents of a file
attachment, ensuring that cached page responses don't reference URLs
that can expire (such as those from S3). This was done for file
attachments, but not for their thumbnails, which were susceptible to the
same problem.

We first noticed a symptom of this issue when moving
https://reviews.reviewboard.org to expiring S3 URLs. Whenever we saved a
caption, we'd see the thumbnail reload. This was happening because we'd
notice the new URL with the new expiration in the metadata and
re-generate the thumbnail information.

Now, the download URL can accept a ?thumbnail=1&width=... query
parameter for accessing the thumbnail image for the attachment. This
requires that the associated MimetypeHandler provides image thumbnail
generation support (which ImageMimetype does).

There's a performance advantage here as well. Now, thumbnails are only
generated on demand, when accessing the appropriate download URL. This
means less work when first processing a file attachment, and potentially
fewer things to delete when cleaning up.

Since that's faster, we can now reference a @3x thumbnail for images
without taking a performance penalty.

Unit tests passed.

Verified that thumbnails were continuing to work, and that editing
captions was no longer causing a reload.

Verified that thumbnail image files were only being generated for the
DPI I was viewing with.

Commits

Files