Протокол «jar» в FireFox

К сожалению, не удаётся сейчас найти эту статью, но я где-то читал около года назад про чьё-то предложение добавить в браузеры поддержку многофайловых архивов, даже какой-то черновик стандарта будто бы был. Хорошая ведь мысль — поместить несколько ресурсов (картинок, например), в архив и загрузить в браузер одним файлом. Например, можно было бы это использовать вместо ЦССных спрайтов.

Я тогда ещё подумал, что ведь уже есть один браузер, который уже это умеет — это «Файерфокс». У него есть протокол «jar», который ровно это и делает: позволяет адресоваться внутрь зип-архивов. Вообще, JAR расшифровывается как Java ARchive и предназначен для распространения программ и компонентов, написанных на языке Джава, но обычный зип-архив с файлами внутри.

Я уже четыре года назад пробовал воспользоваться этим протоколом, но где-то совершил ошибку, а сегодня у меня всё получилось.

Итак, адрес с протоколом jar выглядит следующим образом:

jar:http://bolknote.ru/files/jartest.jar!/foto.jpg

Первая часть урла представляет любой адрес, по которому можно скачать архив (тут могут быть использованы протоколы http, https, file, ftp, но почему-то не data), вторая часть — путь до файла внутри архива, можете посмотреть у меня в разделе «Храню» пример как это всё работает, открывать, естественно, нужно в «Файрфоксе». Код работы с jar (33.53КиБ) Как видите, я поместил внутрь архива часть ЦСС и две картинки, одну из которых поставил задним фоном. Причём, как и в случае обычного урла, протокол по которому загружается ресурс можно опустить (часть «http», в данном случае), будет использован текущий протокол.

Но есть и бочка дёгтя. С пустым кешем или после обновления страницы архив грузится один раз, но если сделать полную перезагрузку страницы (⇧+⌘+R или шифт+контрол+R в Виндоуз), то загружается он столько раз, сколько раз ресурсов грузится на странице. Видимо, какой-то баг. Ресурсы грузятся заново (10.46КиБ)
14 февраля 2013 20:23

Александр Карпинский (инкогнито)
14 февраля 2013, 22:34

rfc3986 поперхнулся, когда это читал.

greli (greli.livejournal.com)
14 февраля 2013, 22:35

Так вроде HTTP2/SPDY и призван решить проблему задержек при загрузке многих файлов, чтобы отпала нужда в спрайтах и т.п.

bolk (bolknote.ru)
15 февраля 2013, 06:13, ответ предназначен greli (greli.livejournal.com):

У SPDY уже версия 3, а я всё ещё не слышал, чтобы от спрайтов отказывались. Поживём, увидим.

Михаил Калашник (splurov.livejournal.com)
15 февраля 2013, 12:22

Больше похоже на баг Фаербага, предлагаю для уверенности проверить по логам сервера.

bolk (bolknote.ru)
15 февраля 2013, 12:39, ответ предназначен Михаил Калашник (splurov.livejournal.com):

Я уже проверил, поэтому и написал безо всяких сомнений.

Ваше имя или адрес блога (можно OpenID):

Текст вашего комментария, не HTML:

Кому бы вы хотели ответить (или кликните на его аватару)