Протокол «jar» в FireFox
К сожалению, не удаётся сейчас найти эту статью, но я где-то читал около года назад про чьё-то предложение добавить в браузеры поддержку многофайловых архивов, даже какой-то черновик стандарта будто бы был. Хорошая ведь мысль — поместить несколько ресурсов (картинок, например), в архив и загрузить в браузер одним файлом. Например, можно было бы это использовать вместо ЦССных спрайтов.
Я тогда ещё подумал, что ведь уже есть один браузер, который уже это умеет — это «Файерфокс». У него есть протокол «jar», который ровно это и делает: позволяет адресоваться внутрь зип-архивов. Вообще, JAR расшифровывается как Java ARchive и предназначен для распространения программ и компонентов, написанных на языке Джава, но обычный зип-архив с файлами внутри.
Я уже четыре года назад пробовал воспользоваться этим протоколом, но где-то совершил ошибку, а сегодня у меня всё получилось.
Итак, адрес с протоколом jar выглядит следующим образом:
jar:/files/jartest.jar!/foto.jpg
Первая часть урла представляет любой адрес, по которому можно скачать архив (тут могут быть использованы протоколы http, https, file, ftp, но почему-то не data), вторая часть — путь до файла внутри архива, можете посмотреть у меня в разделе «Храню» пример как это всё работает, открывать, естественно, нужно в «Файрфоксе».
Как видите, я поместил внутрь архива часть ЦСС и две картинки, одну из которых поставил задним фоном. Причём, как и в случае обычного урла, протокол по которому загружается ресурс можно опустить (часть «http», в данном случае), будет использован текущий протокол.
Но есть и бочка дёгтя. С пустым кешем или после обновления страницы архив грузится один раз, но если сделать полную перезагрузку страницы (⇧+⌘+R или шифт+контрол+R в Виндоуз), то загружается он столько раз, сколько раз ресурсов грузится на странице. Видимо, какой-то баг.
rfc3986 поперхнулся, когда это читал.
Так вроде HTTP2/SPDY и призван решить проблему задержек при загрузке многих файлов, чтобы отпала нужда в спрайтах и т.п.
Комментарий для greli.livejournal.com:
У SPDY уже версия 3, а я всё ещё не слышал, чтобы от спрайтов отказывались. Поживём, увидим.
Больше похоже на баг Фаербага, предлагаю для уверенности проверить по логам сервера.
Комментарий для splurov.livejournal.com:
Я уже проверил, поэтому и написал безо всяких сомнений.