Łukasz Gąsior
  • Home
  • now!
  • Blog
  • Po polsku
Social Links
Twitter
LinkedIn
Facebook
YouTube
Reddit
Instagram
GitHub
Medium
RSS
Łukasz Gąsior
  • Home
  • now!
  • Blog
  • Po polsku
  • Po polsku

Image Optimizer – osadzanie obrazów jako base64

  • 2011-01-16
  • 10 komentarzy
  • 2 minute read
  • 1.2K views

Jakiś czas temu opisywałem nowy plugin do Visual Studio 2010 – Image Optimizer. Wspomniałem w nim, że ułatwia on osadzanie obrazów jako string base64 i dzisiaj chciałbym ten temat rozwinąć.
Standardowo chcąc wyświetlić obraz na stronie www musimy podać jego adres:

url('images/img01.jpg')

Każdy obraz pobierany jest osobnym zapytaniem do serwera, czyli przeglądarka pobiera kod HTML strony, następnie plik CSS (oraz pliki javascript) i wszystkie podane obrazy. Pobieranie “wszystkiego” w osobnych zapytaniach nie byłoby niczym złym gdyby nie to, że z każdym zapytaniem tracimy sporo czasu na nawiązanie połączenia z serwerem.

Na szczęście istnieje możliwość osadzenia obrazów w kodzie strony HTML lub pliku CSS, dzięki czemu całość pobierana jest tylko raz.

Aby to zrobić musimy najpierw przekonwertować obraz to formatu base64. Jeżeli korzystamy z Image Optimizera wystarczy kliknąć prawym przyciskiem myszy na obrazku i wybrać “Extract data URI to clipboard”.

Spowoduje to wygenerowanie kodu:

url('data:image/jpg;base64,/9j/4AAQSkZJRgABAgAAZABkAAD//f8fz7OB2mN2TAx//Z')

który wystarczy umieścić w kodzie HTML lub CSS.

Stosując tę technikę minimalizujemy ilość zapytań do serwera, ale niestety zwiększamy ilość danych przesyłanych do przeglądarki (base64 jest większy niż sam obrazek). Dlatego osadzanie obrazów jako base64 najlepiej sprawdza się w przypadku małych grafik lub wyświetlanych po najechaniu myszką na jakiś element (ponieważ grafika nie musi być pobierana z serwera).

Dodatkowo, żeby życie webdevelopera nie było zbyt proste, technika ta nie jest wspierana przez IE 🙂 co wymaga przygotowania osobnych plików CSS zawierających standardowe linki do obrazów:

<!--[if (IE)]>
<link href="styleie.css" rel="stylesheet" type="text/css" media="screen" />
<![endif]-->

Ciekaw jestem, jaka jest Wasza opinia o tej technice? Stosujecie ją w swoich projektach?

Share
Tweet
Share
Share
Related Topics
  • base64
  • grafika
  • obrazy
  • optymalizacja
You May Also Like
View Post
  • Po polsku

Software Craftsmanship Wrocław

  • 2017-06-06
View Post
  • Po polsku

Pilnuj typów danych

  • 2014-02-26
View Post
  • Po polsku

ReSharper Essentials – poszło!

  • 2014-02-21
View Post
  • Po polsku

Turbo-Mode Developera

  • 2014-02-19
View Post
  • Po polsku

Badanie usability by TechSmith

  • 2014-02-13
View Post
  • Po polsku

Global Windows Azure Bootcamp 2014

  • 2014-02-05
View Post
  • Po polsku

Quick tip: 12. Stosuj AsNoTracking() gdzie się da!

  • 2013-01-27
View Post
  • Po polsku

Quick tip: 11. Indexed views vs. SQL Server Express

  • 2012-07-23
10 comments
  1. Pingback: dotnetomaniak.pl
  2. Maciej Aniserowicz pisze:
    2011-01-17 o 08:19

    Odnośnie IE – od v8 jest to wspierane.

  3. Łukasz Gąsior pisze:
    2011-01-17 o 10:05

    @Maciej Aniserowicz: ale tylko częściowo. Podczas moich testów niektóre obrazy się nie wyświetlały na IE – na pozostałych przeglądarkach działały bez problemu.

  4. mr-owl pisze:
    2011-01-17 o 13:44

    Witam,
    A nie lepiej zrobić to jak jest na stronie Amazon, za pomocą CSS-a pozycjonuje się fragment z dużęgo pliku… więc masz tylko jeden plik graficzny do pobrania.
    Pozdrawiam,
    mr-owl

  5. Łukasz Gąsior pisze:
    2011-01-17 o 14:01

    @mr-owl: można – ale to chciałem opisać w jednym z kolejnych postów.

  6. Łukasz pisze:
    2011-01-18 o 00:09

    No to czekam na kolejne posty o optymalizacji ! 🙂

  7. Adam pisze:
    2011-01-19 o 02:19

    Jeśli chodzi o tła – lepiej użyć CSS Sprites. W pozycjonowaniu tła obrazka, świetnie pomaga http://www.spritebox.net. Co do szybkości ładowania obrazków, można użyć Amazon S3 albo innego CDN.

  8. Maciej Aniserowicz pisze:
    2011-01-19 o 07:57

    @Łukasz Gąsior:
    W IE8 istnieje ograniczenie rozmiaru takiego obrazu do chyba 32kB (w v9 już tego nie ma)

  9. Łukasz Gąsior pisze:
    2011-01-19 o 08:11

    @Adam – o tym napiszę niedługo 🙂

  10. Abigail_paige pisze:
    2012-07-13 o 16:47

    No to czekam na kolejne posty o optymalizacji ! 🙂

Comments are closed.

click & help!
Nakarm dziecko!
Follow me
RESHARPER ESSENTIALS
ReSharper Essentials
CODINGTV();
codingtv();
Twitter Feed
Categories
  • Azure Cloud (6)
  • Po polsku (104)
  • Windows (1)
Featured Posts
  • Azure Activity Log – Change History
    • 2020-09-29
  • Diagram Driven Cloud Infrastructure with Cloud Maker
    • 2020-09-22
  • Azure ARM template, but it is not JSON!
    • 2020-09-15
About
👍 Cloud | DevOps | Development | Technical Leadership | 📗Author of "ReSharper Essentials
© 2019 Łukasz Gąsior. All rights reserved.
hosted with ♥️ on webio | Polityka prywatności

Input your search keywords and press Enter.