Suunnittele ajatuksella
Vaihtelu sivun koossa voi olla suurta samankin sivuston eri sivujen välillä. Sivujen koko kannattaa ottaa huomioon jo suunnitteluvaiheessa, jolloin useimmin vieraillut sivut eivät olisi niitä kaikkein raskaimpia. Raskaan, mutta harvoin vieraillun sivun ympäristökuormitus on pienempi kuin kevyellä sivulla, jolla vieraillaan paljon.
Huolellisella sisältöoptimoinnilla voidaan vähentää sivulatausten määrää, jolloin käyttäjä löytää haluamansa sivun helposti ja saa siltä sivulta haluamansa tiedon. Tätä tukee myös navigaatio, josta myös alemman tason sivut ovat helposti löydettävissä ilman, että käyttäjä joutuu ensin kulkemaan useamman (esim. kategoria-) sivun kautta päästäkseen haluamaansa sisältöön (esim. tuotesivulle).
Kuvat, videot ja animaatiot vievät paljon kaistaa. Niiden käyttöä kannattaa harkita tarkkaan. Vaikka kuva kertoo enemmän kuin tuhat sanaa, 1MB kuvatiedoston viemä tila vastaa 150 000 sanan viemää tilaa. 1 s videota vie enemmän tilaa kuin kokoruudun .jpg-kuva. Kuvan pikselimittojen tuplaaminen yli tuplaa tiedostokoon, joten kannattaa miettiä, tarvitaanko oikeasti (retina-) näytön reunasta reunaan ulottuvaa koko ruudun kokoista kuvaa, vai voitaisiinko se korvata esim. värialueella ja pienemmällä kuvalla? Tarvitaanko todella kuvakarusellia, vai pärjätäänkö yhdellä kuvalla? Tarvitaanko oikeasti kuvaa, vai voidaanko se korvata esim. .svg-ikonilla? Kevyen sivun ei ole pakko olla tylsä!
Kuvien optimoinnin hienosäätöön saa kulumaan helposti runsaasti aikaa, koska paras tulos saadaan aina kuvakohtaisilla säädöillä. Peukalosääntönä kuitenkin seuraavat:
- valokuvissa .jpg on kevyempi kuin .png
- .webp on kevyempi kuin .jpg
- ikoneissa, graafeissa yms. paljon tasaista väripintaa sisältävissä kuvissa .png on kevyempi kuin .jpg
- yksinkertaisissa ikoneissa, logoissa jne .svg on kevyempi kuin .png
- mustavalkokuvat ovat kevyempiä kuin värilliset (jos kuvatiedostossa on oikeasti valittuna vain harmaasävyt)
- Videoissa .mp4 on kevyempi kuin .webm
- kuvista voi poistaa ylimääräiset värikanavat, metatiedot jne., esim. .jpg-kuvien reunojen sumennus pienentä kuvatiedoston kokoa vaikuttamatta suurestikaan varsinaisen sisällön laatuun – tämä toki on kuvakohtaista.
Animaatiot elävöittävät sivuja mukavasti, mutta niidenkin vaikutus prosessorin käyttöön kannattaa ottaa huomioon ja tarkastaa. Vaikka JS on suorituskykyisempää kuin PHP-koodi, paljon laskentaa sisältävät sivut/efektit kasvattavat käyttäjän laitteen CPU-kuormaa, esim. sivunlatauksen yhteydessä oleva fade-in-efekti saattaa kasvattaa CPU-kuormaa jopa 22 %. Animoinnit voivat tuottaa myös yllätyksiä prosessorikuorman suhteen, kuten on selostettu seuraavassa kirjoituksessa: https://betterprogramming.pub/do-not-burn-you-cpu-working-with-css-animations-e4d19069fb0f. CPU-kuorman lisääntyminen näkyy esim. mobiililaitteen akun nopeampana kulumisena eli lataustarpeen tihentymisenä.
Sivuston ulkoasusuunnittelussa kannattaa ottaa huomioon, että yksittäisen fontin yksittäinen leikkaus voi olla kooltaan helposti 250kb. Montaako eri fonttia sivustolla tarvitaan, montaako leikkausta (kursiivi, lihavointi, light, regular…) tarvitaan, voidaanko niistä karsia? Voidaanko käyttää järjestelmäfontteja vai tarvitaanko ladattava erikoisfontti? Voidaanko ladata fonttitiedosto palvelimelle vai onko se ladattava joka kerta kolmannen osapuolen palvelimelta? Missä muodossa fontti on (esim. woff2 on huomattavasti kevyempi kuin .ttf)? Käytetäänkö kaikkia fonttitiedoston sisältämiä merkkejä vai voidaanko siitä karsia käyttämättömien kieliversioiden erikoismerkit pois?
LCD-näytöillä väreillä ei ole merkitystä, mutta OLED-näytöillä myös värien valinta vaikuttaa virrankulutukseen: mitä tummempi väri, sen pienempi virrankulutus ja päinvastoin. Sininen vie 25 % enemmän virtaa kuin vihreä tai punainen. Tumman teeman käyttäminen YouTubessa kulutti OLED-näytön virtaa jopa 43% vähemmän kuin normaaliteema (https://www.zdnet.com/article/google-heres-why-dark-mode-massively-extends-your-oled-phones-battery-life/).
Käytettävät koodikirjastot kannattaa miettiä huolella. Tarvitaanko suurta javascript-kirjastoa (esim. jQuery), voidaanko sama tehdä puhtaalla javascriptillä? Tarvitaanko javascriptiä esim. jonkun efektin tekoon, vai voidaanko sama toteuttaa css:llä? Tarvitseeko ladata kokonaista ikonikirjastoa, jos käytetään vain muutamaa ikonia, voiko ne ladata yksitellen?
Erilaiset seurantaskriptit vievät myös yllättävän paljon kaistanleveyttä, ne voivat muodostaa jopa puolet sivuston tiedonsiirrosta. Käytä siis myös niitä harkiten! Tarvitaanko kaikkia skriptejä kaiken aikaa, vai voidaanko joku ottaa pois esim. kampanjan päätyttyä?
Siispä suursiivoa säännöllisesti! Poista sivuilta vanhentunut sisältö ja vanhentuneet sivut, jolloin käyttäjät lataavat vain oleellista sisältöä. Poista palvelimelta kuvat, joita ei käytetä ja vanhat sivustoversiot, jotka ovat unohtuneet palvelimen nurkalle. Poista seuranta- yms. skriptit, joita ei enää tarvita.