> возможно, тут я перегнул: очень давно не видел незацикленых гифов, не уверен,
> как себя ведут браузеры с ними.Ну да, там несколько вариантов возможно. Сжатый вариант наверное все прихранивают в кэше, но там по идее должны действовать правила на максимальный размер кэша в RAM. Если браузер на это забивает - это баг, по любому. А вот хранят ли они декомпресснутые кадры... с одной стороны это немного разгрузило бы CPU, с другой - на большой гифке это сожрет дофига RAM.
> буду, впрочем, сильно удивлён, если кому-то было настолько нечего делать,
> чтобы писать два варианта кода для обработки гифов — учитывая то,
> что большинство их них зацикленые. надо бы, конечно, глянуть исходники
> вебкита и гекона, но пардон — лень.
Они, конечно, как правило, зациклены, но IIRC
1) Спеки анимированных гифок довольно гибкие (что и позволило гражданам изобразить такой изврат). Насколько я помню, каждый кадр идет с отдельной задержкой, отдельной палитрой и прочая. Для своего времени - вполне культурно и продвинуто сделано, IMHO.
2) Можно и не хранить расжатые кадры а декомпрессить их по мере надобностии, забывая о них потом. Но можно и попытаться соптимизировать на свой зад, храня декомпресснутые версии кадров, да. Вот только эту оптимизацию, если она есть, можно попробовать профлудить старинным фокусом с декомпресс-бомбардировкой, если уж развить идею :).
> опера, например, ведёт себя забавно: проигрывает гиф заново при каждой активации таба.
> вебкит и гекон так себя не ведут,
Они честно выполняют спецификацию, в отличие от еперы. Ну то-есть они играют гифки так как там задано.
> но сохраняют ли все кадры — не знаю.
Зависит от того соптимизили ли они декомпрессию кольцевых гифок в пользу пожирания памяти или нет. Лень смотреть в сорце, да :)
> бомбы давно уже по интернетам бы прыгали.
Вот это кстати не факт. Таких веселых бомб было, есть и наверное еще немало будет. Например, виндовые дрова (ATI, intel) падали в бсод если в браузере пытаютcя показать большую картинку (порядка 99999 х 99999 пикселей). Ее даже не генерили - просто попросили браузер в свойствах элемента растянуть картинку на вот столько. Аналогичная по смыслу атака существовала и на иксы, и как минимум через лису прокатывала. Фокус был в том чтобы запросить дофига памяти. Запрашивалась. И иксы сыпались к черту. В современных версиях или лисы, или иксов сие вроде как заделали.
Например, вот этот PNG - http://apollo.sese.asu.edu/METRIC_PREVIEW/AS15-M-0081/AS15-M... - выносил народу браузер и иксы (warning: весит 251Mb). Сейчас вроде не выносит. Правда памяти жрет, да :)