3 ms·
I guess technically you could store original and encode to <whatever format is popular> on-demand then just cache the most popular ones
by ilyt 3y ago
I guess technically you could store original and encode to <whatever format is popular> on-demand then just cache the most popular ones
- PaulHoule 3y agoIn internet-scale systems complex delivery systems involving transformation and caching are not necessarily a win for performance insofar as once you give up a millisecond of latency you cannot get it back. You very much can get a win out of a CDN but somebody has to do aggressive tuning of absolutely everything.
- ilyt 3y agoIt's not for performance but for not having to permanently store terabytes of differently encoded data. You could possibly also pre-populate cache - all new media files get sent to encoder and cached preemptively, and if they are popular enough they just stay there till they are not.
- andrewaylett 3y agoYes, we do that. Well, the CDN does the caching -- but we still get a 99.99% hit rate. Please forgive the case study format, but I'm quite proud of what we did and this is the easiest way to back up my assertion with data: https://aws.amazon.com/solutions/case-studies/skyscanner-cloudfront-case-study/ https://aws.amazon.com/solutions/case-studies/skyscanner-clo... We're currently generating JPG, WebP, and PNG, depending on the source and the target. The problem with doing this on-demand is that formats that are great for delivery but slow to encode aren't useful. I did try to add AVIF, but the latency on the first request was too high for it to be practical.
- ilyt 3y agoI guess "preheating" cache with preemptively encoding and putting new content in cache before it is shown to client could work? But still, anything AV1 based just needs a lot performance to encode that just doesn't feel worth it at the moment. Our system to encode videos was tooled for that but developers eventually decided it's too slow/cpu hungry to bother. It was some time ago tho, encoders did get better...