Ograniczenia CSS Sprites, czyli optymalizacja z rozsądkiem
Czas czytania:
Optymalizacja jest niezbędnym elementem tworzenia aplikacji internetowych. W dobie błyskawicznie rosnącej liczby użytkowników korzystających do przeglądania Internetu z urządzeń mobilnych o różnych parametrach, w różnych miejscach, przy użyciu łącz o różnej przepustowości, optymalizacja ma wręcz znaczenie krytyczne. Jedną z bardzo popularnych technik ograniczenia ilości zapytań do serwera jest łączenie wielu obrazków w jeden (CSS Sprites). Jednakże ze względu na ograniczenia urządzeń optymalizować trzeba również optymalnie… ![]()
Maksymalny rozmiar tekstury
CSS Sprites stworzone ze znacznej ilości mniejszych obrazków daje bardzo wymierne korzyści dopóki wymiary wynikowego pliku nie przekroczą wartości maksymalnych dla danego urządzenia wynikających z ilości dostępnej pamięci RAM. Apple podaje[1], że maksymalne wymiary plików GIF, PNG oraz TIFF dla urządzeń z:
- < 256MB RAM:
width * height ≤ 3 * 1024 * 1024 - >= 256MB RAM:
width * height ≤ 5 * 1024 * 1024
Dokładniejsze zestawienie przedstawia poniższa tabela:
| Urządzenie | Maksymalny rozmiar tekstury |
| iPod Touch | 1024 x 1024 |
| iPod Touch (Second Generation) | 1024 x 1024 |
| iPod Touch (Third Generation) | 2048 x 2048 |
| iPod Touch (Fourth Generation) | 2048 x 2048 |
| iPhone | 1024 x 1024 |
| iPhone 3G | 1024 x 1024 |
| iPhone 3GS | 2048 x 2048 |
| iPhone 4 | 2048 x 2048 |
| Samsung GT-i9100 Galaxy S2 | 4096 x 4096 |
| Google Nexus S | 2048 x 2048 |
| HTC EVO 4G+ | 4096 x 4096 |
| HTC Vision (Desire Z) | 4096 x 4096 |
| LG P990 Optimus 2X | 2048 x 2048 |
| HTC G1 | 1024 x 1024 |
| Barnes & Noble Nook color | 2048 x 2048 |
Źródło: http://hellomobiledevworld.blogspot.co.uk/2011/09/sprite-sheets-and-maximum-texture-size.html [2]
Przekroczenie wartości maksymalnych powoduje, że w najlepszym wypadku grafika będzie niewyraźna i przeskalowana lub nawet urządzenie całkowicie się zawiesi. ![]()
Sposoby przeciwdziałania
- Duże zagęszczenie obrazków
Trzeba się postarać, żeby jak najwydajniej zagospodarować wolną powierzchnię wynikowego pliku CSS Sprites. Znakomicie w tym celu sprawdza się plugin „grunt-spritesmith” z zastosowanym algorytmem „binary tree”.
- Rozdzielenie na kilka plików
Przy tworzeniu CSS Sprites znacznych wymiarów, warto podzielić je tematycznie na kilka plików (oczywiście nie za dużo, bo straci to cały sens sprite’ów ) np. ikonki, pozostałe itp.
Podsumowanie
Optymalizację bardzo dużej ilości plików przy pomocy CSS Sprites należy rozplanować z rozsądkiem. Warto podzielić pliki tematycznie oraz każdy plik sprite „gęsto upakować”, żeby posiadał jak najmniejsze wymiary. Idealnie byłoby nie przekraczać 1024px x 1024px, jednak w dobie szybkiego rozwoju rynku mobilnego, 2048px x 2048px jest wartością obecnie wg. mnie dość bezpieczną. Należy pamiętać, że dla wyświetlaczy retina obrazki stosuje się o wymiarach 2x większych. Niezależnie od rozdzielczości grafiki niezbędne jest poddanie jej kompresji, ponieważ nawet najlepiej upakowany CSS Sprite o optymalnych wymiarach, a nieskompresowany, będzie dłużej ładowany przez przeglądarkę.
Bibliografia
[1] Creating Compatible Web Content
[2] Sprite sheets and Maximum texture size
Materiały pomocnicze
Zainteresował Cię ten artykuł?
Może Cię również zainteresować:
5 rzeczy, na które warto zwrócić uwagę, wybierając dedykowany system klasy ERP, WMS lub LMS
Tworzenie dedykowanych aplikacji web’owych (dostępnych przez przeglądarkę WWW z poziomu komputera, tabletu czy telefonu) jest… Read More
Warsztaty Discovery – 5 powodów dla których warto je przeprowadzić
Post pochodzi bezpośrednio z naszych oficjalnych kanałów na Social Media. W dynamicznym… Read More
Optymalizacja eCommerce vs. Zewnętrzny Dyrektor Technologiczny
🛠️ Studium przypadku 🛠️Post pochodzi bezpośrednio z naszych oficjalnych kanałów na Social… Read More