Já bych s dovolením (bez odkazu) připomněl debatu o novém certifikátu Let’s Encrypt - že totiž bude nutné přejít na certifikáty od někoho jiného, protože to nebude podporovat Android starší než 7.1.
Copak o to, Let’s Encrypt to vyřešil křížovými podpisem, ale když pro certifikáty byl na tomto fóru validní argument přes 5 let starých nepodporovaných zařízení, co čekáte u obrázků?
Co obrázky odkazované ze stylů (nebo z SVG)? Správnější řešení je, že správný formát souboru pošle server na základě hlaviček prohlížeče. Jenže to spousta dnešních „one-click“ řešení neumí. V případě, kdy to server umí, zase musí vědět tvůrce webu, že něco takového existuje a domluvit se se správcem webového serveru, aby ho správně nastavil.
"Správnější řešení" je přece závislé na kontextu, obrázky může "správně" vkládat i klientská strana (bez víceformátového picture). A pro CSS samozřejmě řešení existuje taky: https://css-tricks.com/using-webp-images/
Nebo třeba: https://github.com/leechy/imgsupport
8. 8. 2021, 13:48 editováno autorem komentáře
Nerozumím, co znamená „obrázky může "správně" vkládat i klientská strana“.
V HTTP protokolu je přece už strašně dávno hlavička Accept, která říká, které formáty klient akceptuje (a dokonce i jak moc který formát preferuje). Bavíme se tu teď o optimalizaci přenosu, takže jde o to vybrat co nejmenší soubor ve formátu, který prohlížeč podporuje. To nemůže udělat prohlížeč, protože neví, jak je který soubor velký. Akorát může hádat, že modernější formát bude úspornější. Což ale není vždy pravda. Navíc tím řešením s picture zbytečně bobtná HTML kód.
Prohlížeč může správně rozhodnout o velikosti obrázku, protože zná rozměry viewportu, kde se má obrázek zobrazit. Tuhle informaci zase neví server.
Způsob, jak to udělat v CSS, není řešení, ale ošklivý hack.
Nerozumím, co znamená „obrázky může "správně" vkládat i klientská strana“.
V době SPA si většinu věcí řídí skript na straně klienta. Serveráře s každou změnou není třeba otravovat. Pokud se chceš spoléhat na HTTP accept, stačí si přeposlat jeho obsah.
Způsob, jak to udělat v CSS, není řešení, ale ošklivý hack.
Aha, takže ono to problém vyřeší a není to řešení. Debata je asi zbytečná, máš potřebu "vyhrát" jakýmikoli prostředky.
Davide, problém není v tom, že bychom to nezaznamenali. Problém je v tom, že to často znamená docela velké změny protože používané knihovny jsou zhusta také pozadu, úpravy celého flow protože staré prohlížeče nemůžete ignorovat, zajištění, že to celé bude dostatečně rychlé a tak dále a tak dále. A to celé musí někdo zaplatit a to udělá jen když přínos bude opravdu zjevný a to v těchto případech z hlediska investorů, upřímně, velmi často opravdu není.
Všimnout si toho je to poslední, co je problém.
Stejně, není divné, že něco jako podporu formátů jako je právě AVIF a další si implementují prohlížeče sami? Architektonicky by mně přišlo mnohem flexibilnější, aby jim podporu pro tohle poskytoval sám systém a prohlížeče pak nemusely být takové molochy a jenom volaly něco co by jim to vrátilo už vykreslené.
Kdysi jsem si to taky říkal. Pokud jde o podporu formátů, které si prohlížeč vybere, že je chce podporovat, pak to může poskytovat nějaká (klidně sdílená) knihovna. Nemusí si to každý prohlížeč implementovat sám, a dost možná to ani prohlížeče nedělají. (Nemám ale detailní přehled.) Nevím, jestli tomu říkáte, že to „poskytuje systém“. Výhody toho, kdy to „poskytuje systém“, tu jsou, zároveň to nevyžaduje, aby ta knihovna byla i v systémech, kde nic takového potřeba není. Není potřeba řešit, jestli má systém poskytovat podporu pro zvukové formáty, obrazové formáty, video formáty, AI, GUI, rozpoznání řeči a já nevím co ještě. Není potřeba řešit, jaké formáty má systém podporovat. Není potřeba řešit, že API nestačí dnešním potřebám.
Třeba v Gentoo má Firefox tyto volby, podle kterých se buď použije knihovna systému, nebo ta dodávaná s Firefoxem.
+ - system-av1 : Use the system-wide media-libs/dav1d and media-libs/libaom library instead of bundled. + - system-harfbuzz : Use the system-wide media-libs/harfbuzz and media-gfx/graphite2 instead of bundled. + - system-icu : Use the system-wide dev-libs/icu instead of bundled. + + system-jpeg : Use the system-wide media-libs/libjpeg-turbo instead of bundled. + - system-libevent : Use the system-wide dev-libs/libevent instead of bundled. + - system-libvpx : Use the system-wide media-libs/libvpx instead of bundled. + - system-webp : Use the system-wide media-libs/libwebp instead of bundled.
Jiné distibuce si to přeloží, jak uznají za vhodné. Třeba v Ubuntu to vypadá, že Firefox systémové knihovny nepoužívá:
$ldd /usr/lib/firefox/firefox
linux-vdso.so.1 (0x00007f40a5320000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f40a520b000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f40a5205000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f40a5023000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f40a4ed4000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f40a4eb9000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f40a4cc7000)
/lib64/ld-linux-x86-64.so.2 (0x00007f40a5322000)
Knihovna dodávaná s Firefoxem nemusí znamenat vlastní implementaci, prostě jen může Mozilla vzít konkrétní verzi (s případnými patchi) v konkrétní konfiguraci, protože tu kombinaci mají otestovanou.
V případě Ubuntu nevím. Firefox používá víceprocesovou architekturu, má tedy i renderer proces, na který může mít separátní binárku. Možná by víc napovědělo lsof.