Also, I wonder if it's possible to use a cache-able "rolling signature" for content previews, similar to profile pictures. The same concept of tune-able security is there, where it could be set for 1 second, 5 minutes, 1 day, etc

This would differ slightly in that we would need to include the content lastUpdated timestamp in the signature body in order to invalidate the previous signature and properly bust the cache when new preview items are available. To avoid having to do a second fetch on the Content CF in this method, I think we could get away with delivering the content preview signature in "getContent", because the signature only needs elements of the content object, not the preview filenames.

To support this, the "rolling signature" logic could be moved out of principals into something like a `Signature.createRollingSignature(unit<'second', 'minute', 'hour'...>, value, offsetUnit, offsetValue)` method. `offset` being the grace-time, similar to profile pictures, that ensures a signature doesn't expire between the time the user receives it and the time the page loads.

What do you think?