JavaScript Image Optimiser (JSIO)

So, I’ve embarked on a new mini project. It is kind of inspired by image sprites.

Image sprites are a great idea, but come with a whole bunch of issues that make them a bit of a pain to work with.

Firstly, most of the time you have to use markup to create an element in html to “hold” the image you wanted to display from your sprite. This is because if you actually set a sprite as the background image for a large html element you’re likely to see other images in the sprite as well. Because of this, you actually lose useful functionality that CSS gives you, like the ability to position, repeat and scale an image. Also, the markup you’ve created to hold the image exists for style purposes, which is bad.

Secondly, sprites can be a massive ball ache to maintain. If you’ve closely packed your images in a sprite for maximum efficiency and then one of your images needs to change size, you’re either going to have to move ALL images surrounding the image you have to update (and obviously then change all background-position properties for the images you’ve moved) or leave a space and put the updated image in a new position in your sprite.

How do you know which images in a sprite are used and which ones are dead? Since your images are referenced by coordinates, this sort of clean up becomes a nightmare and is actually a bit lot of a nightmare to create image sprites in the first place.

The goals of the project are to

  1. Reduce the number of http requests (and their associated header traffic) to the server and hence reduce the time it takes to load all images on a website and bandwidth footprint the site requires
  2. Create a solution that’ll alleviate some of the problems surrounding the creation and use of image sprites
  3. Do something cool

The JSIO project website has a pretty good explanation of how it works so I won’t bore you with the details here. However, as a brief overview, it packages all your image data in data uri format and you reference particular images by their filename rather than their coordinates.

The site actually uses the HTML5 file api to generate your resources file for you, which makes creating and maintaining your JSIO “sprite” really really easy.

I read *somewhere* that data uri encoded images can be up to 1/3 larger than corresponding image files, however with gzip encoding they can be only 0-3% larger (or less). My thesis is that for a site with many small images, JSIO could be more efficient and easier to maintain than having separate files or even an image sprite.

…I’m yet to prove or disprove this and I’ll be conducting some tests whose results I’ll post up here (even if they do prove JSIO to be useless).

Disclaimer: This is the first ever ALPHA release of JSIO – it works on the latest Firefox and Chrome but I haven’t even checked it in IE yet. It probably won’t work in IE yet. Also, the website needs some work for optimal display on mobile devices.

17,098 thoughts on “JavaScript Image Optimiser (JSIO)”

  1. best online casino askgamblers casino admiral kozina biz evolution live casino live casino top 10 https://pulmo-panjan.si free bet offer 365 providers of online casino for asia slots free game casino

  2. oshi casino no deposit bonus codes bet365 login bonus code Igralni Avtomati sign up casino free spins 2026 slovenija

  3. online kazino slovenija casino slovenia online no deposit codes hotel casino safir slovenia bet365 bonus code for existing customers https://franciscogpr.com joo casino bonus codes casino triomphe no deposit bonus 888 casino blackjack

  4. kazino igrice book of ra bet365 poker bonus code Spletna igralnica za slovenski trg casino slovenia lubiana

  5. I am genuinely glad to glance at this website posts which contains plenty of helpful facts, thanks for providing these kinds of statistics.

  6. buffalo casino game free spins feature Ugodnosti igralnic v Sloveniji welcome bonus no deposit

  7. spletne casino igre book of ra slot casino bonus 1000 casino igre lucky lady https://pulmo-panjan.si zodiac casino free download casino besplatne igre automati casino blackjack rules

  8. ice casino bonus code casino slovenia confine italia Igralnica Hell Spin Slovenija bet365 free spins

  9. free spins no deposit casino no deposit bonus codes for bitstarz casino omni casino no deposit bonus kako izgleda casino https://zooactive.si slovenian online casino What is the most trusted online casino online casino izplaДЌila v sloveniji

  10. combinaciones ruleta casino

    Feel free to visit my blog post … casinos en toledo españa (Tia)

  11. Hi to aⅼl, the contents existing ɑt tһis web ρage arе really awesome fߋr people knowledge, weⅼl,ҝeep uρ the good work fellows.

    Feel free to surf to my web blog: online math tuition; Jason,

  12. free spins no deposit 2026 ramses gold casino no deposit bonus Spletne Igralniske Igre black lotus casino no deposit bonus

  13. riverbelle online casino login slot games free casino igt igre casino free book casino z licenco slovenija https://pulmo-panjan.si most trusted online casino zastonj casino igre pending bonus dollars bet365

  14. 1 euro deposit casino riverbelle online casino mobile Odkrijte igralniske igre casino bonus brez depozita ЕЎvica

  15. Онлайн-кинотеатр предлагает коллекцию фильмов и сериалов в HD и 4K качестве. Библиотека регулярно пополняется новинками мирового кинематографа для бесплатного просмотра на любых устройствах. Ищете сериалы онлайн? Зрителям доступен сайт wowsfilms.ru без регистрации и подписок. Ассортимент охватывает боевики комедийные ленты драмы триллеры фантастические картины и анимацию с оценками.

  16. Ищете займ на карту казахстан? Посетите сайт izaim.kz и с помощью подбора онлайн займа вы найдете самые выгодные условия круглосуточно и без отказа. Если нужно рассчитайте параметры займа с помощью онлайн-калькулятора а мы подберем для вас лучшие финансовые продукты на рынке.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>