5 ms·
> I don’t think there’s a perfect answer. You simply cannot predict with 100% certainty what the browser would choose. But you can get a good approximation by p
by gildas 4y ago
> I don’t think there’s a perfect answer. You simply cannot predict with 100% certainty what the browser would choose. But you can get a good approximation by parsing the User-Agent header
Isn't it the purpose of the "Accept" HTTP header? For example the last version of Firefox sends "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,/;q=0.8" when fetching a page.
- capableweb 4y agoYup, exactly. Seems like a strange omission. Using the <picture> tag should make that obsolete though, as the browser can chose which image to fetch without involving the backend, maybe that's why?
- deleted 4y ago[deleted]
- geoffeg 4y agoI've been surprised lately by the number of people that don't know about or understand HTTP headers. One discussion I saw was on a project that was trying to decide what language to serve a webpage in. They spent a good amount of time choosing a geo-location provider and library and then deciding what language to default to for locations that often had multiple languages. I asked why they didn't just use the Accept-Language header, which they weren't aware of.
- dmitriid 4y agoI wish more people knew about this: https://github.com/for-GET/http-decision-diagram https://github.com/for-GET/http-decision-diagram and https://github.com/for-GET/know-your-http-well https://github.com/for-GET/know-your-http-well
- wwalexander 4y agoSame thing with core UNIX commands, and so many other areas. We are doomed to incessantly reinvent the wheel and turn versatile abstractions into single-purpose complications. One must imagine Sisyphus happy.
- levymetal 4y agoGoogle famously uses geolocation to set language instead of Accept-Language. They have their reasons, which I disagree with. https://news.ycombinator.com/item?id=30638590 https://news.ycombinator.com/item?id=30638590
- CamelRocketFish 4y agoAgreed, this experience is terrible.
- Theodores 4y agoExactly. Just have jpg in the code and serve webp based on header. Problem solved. If you can do avif with better results than webp then do that. You can also vary on the data save if you are really keen.
- jbverschoor 4y agoYou’d need to serve the proper resolution too
- unilynx 4y agoYou can't easily use that with a plain* CDN though - you would need to add a Vary: Accept header and cache misses will increase as every variant of Accept: will cache a different version * it seems fixable with things like Lambda@Edge and I wouldn't be surprised if a smart CDN which already does on-the-fly image compression had implemented this too
- selcuka 4y agoYou can't parse the User-Agent header (which is the suggested method in the article) with a plain CDN either, so that argument is moot.