100 pistettä PageSpeedissä: mitä muutimme sen eteen

Latausaika on sijoitustekijä, mutta tavanomaiset neuvot auttavat harvoin. Tämä artikkeli kuvaa, mitä oikeasti muutimme omalla sivullamme, kuinka paljon mikäkin toimenpide toi ja missä käännyimme väärään suuntaan.

Hehkuva muoto kiihtyy oikealle, sen takana tummat lohkot hajoavat

Tärkeimmät kohdat

  • Suurin yksittäinen voitto ei tullut tiedostojen pienentämisestä vaan siitä, että 458 kilotavun kirjasto korvattiin 6 kilotavulla omaa koodia.
  • Toiseksi suurin syy oli puoliksi määritetty pakkaus: palvelin pakkasi vain HTML:n, ei CSS:ää eikä JavaScriptiä.
  • Arvon 1 suuruinen taittohyppy maksoi 24 pistettä – syynä jälkikäteen ladattu CSS, joka astui voimaan vasta ensimmäisen piirron jälkeen.
  • Mikä toi vähiten: kuvaformaatit. Mikä toi eniten: asioiden pois jättäminen.

Lähtöarvo oli 58 sadasta puhelimella. Se ei ole huono arvo verkkosivustolle, jonka yläosassa on 3D-tehoste, mutta se on arvo, jota Google rankaisee mobiilihaussa tuntuvasti. Lopussa oli 100 pistettä tietokoneella ja 98 puhelimella, samoin 100 saavutettavuudesta.

Seuraava ei ole yleinen tarkistuslista vaan todellinen kulku – mukaan lukien kohdat, joissa erehdyimme.

Hehkuva muoto kiihtyy oikealle, sen takana tummat lohkot hajoavat
Sivusta ei tule nopea optimoimalla vaan jättämällä pois.

Lähtötilanne

Mittausarvo (mobiili)ennenjälkeen
Suorituskyky5898
Saavutettavuus95100
Ensimmäinen piirto6,1 s1,4 s
Suurin elementti näkyvissä11,1 s2,1 s
Siirretty yhteensä298 KB184 KB
siitä JavaScriptiä121 KB5 KB

Viisi toimenpidettä, joilla todella oli merkitystä

1. Korvaa kirjasto, älä optimoi sitä

Yläosassa näkyy hiukkaspilvi 3D:nä. Sitä varten pyöri tunnettu grafiikkakirjasto – 458 kilotavua pienentämisen jälkeen. Mittaus osoitti, ettei 51 kilotavua siitä suoritettu koskaan.

Ratkaiseva näkökulma oli kysymys siitä, kuinka paljon oikeasti tarvitsemme. Osia oli yksitoista: renderoija, näkymä, kamera, geometria, materiaali ja muutama apuluokka. Kaikki nämä voi ohjelmoida suoraan selaimen grafiikkarajapintaa vasten.

Tulos: 458 kilotavusta tuli 6 kilotavua. Ulkoasu on identtinen – otimme käyttöön samat varjostimet.

Huomio Kaksi yksityiskohtaa on tällöin jäljiteltävä, muuten lopputulos näyttää väärältä: kirjasto muuntaa värit heksamuodosta lineaariseksi valoksi, ja se sekoittaa additiivisesti esikerrotulla alfalla. Ilman kumpaakaan hiukkaspilvemme vaikutti selvästi räikeämmältä kuin ennen.

2. Pakkaus oli vain puoliksi päällä

Palvelinasetuksissa pakkaus oli «päällä» – mutta rivi, joka määrää pakattavat tiedostotyypit, oli kommentoitu pois. Se on monen jakelun oletus. Tulos: pakattiin yksinomaan HTML.

Grafiikkakirjasto siis kulki linjaa pitkin pakkaamattomana. Kytkemisen jälkeen: 1243 kilotavusta tuli 251 kilotavua. Lisäksi pidämme pakatut versiot nyt valmiiksi laskettuina vieressä, jottei palvelimen tarvitse laskea uudelleen joka noudolla.

Vaiva: kaksi riviä asetuksia. Vaikutus: vajaa megatavu ensimmäistä avausta kohden.

3. Poista animaatiokirjasto kokonaan

Vierityksen aikaisiin sisääntuloihin pyöri toinen kirjasto, 114 kilotavua. Mittaus osoitti sen lisäksi aiheuttavan pakotettuja taiton uudelleenlaskentoja – se kysyi vierityksen aikana geometriaa ja pakotti selaimen laskemaan taiton uudelleen keskellä liikettä.

Korvattu IntersectionObserver-tarkkailijalla, joka vain asettaa luokan. Varsinaisen liikkeen tekee CSS. 114 kilotavua vähemmän, ei enää uudelleenlaskentoja, noin 40 riviä omaa koodia.

4. Favicon oli 205 kilotavun kokoinen

Pikkuseikka hämmästyttävällä vaikutuksella, koska se ladataan hyvin varhain. Korvattu 6 kilotavun SVG-tiedostolla, joka luotiin olemassa olevasta logosta.

Tiesitkö?

Googlen hakutuloksissa näkymiseen SVG-faviconista ei ole hyötyä – Google hyväksyy siellä vain rasterimuotoja, ja kuvan on oltava neliö, jonka sivun pituus on 48 kuvapisteen monikerta.

Se, joka siis tallentaa vain SVG:n, saa hakutuloksessa harmaan paikanpitäjän oman logonsa sijaan. Molempien ilmoittaminen rinnakkain on oikea tapa.

5. Kysy geometriaa animaatiokehyksessä

Eräs skripti luki jokaisen vieritystapahtuman yhteydessä dokumentin kokonaiskorkeuden. Tätä ominaisuutta selain ei voi vastata muistista – sen on laskettava koko sivun taitto uudelleen, keskellä vieritystä.

Siitä seuraava sääntö, joka pätee kaikkialla: lue tapahtumassa, kirjoita seuraavassa kuvassa. Ei koskaan toisin päin. Siitä lähtien sivun korkeus mitataan kerran ja muistetaan sen sijaan että sitä kysyttäisiin uudelleen kuusikymmentä kertaa sekunnissa.

Virhe, joka maksoi 24 pistettä

Vasemmalla tiheä pino harmaita lohkoja, oikealle jää jäljelle vain muutama hehkuva
Se, mitä jää jäljelle, ratkaisee latausajan – ei se, kuinka hyvin jäljelle jäänyt on pakattu.
Käytännöstä

Päästäksemme eroon viimeisestä estävästä pyynnöstä olimme jakaneet tyylitiedoston: näkyvään alueeseen tarvittava osa tuli suoraan dokumenttiin, loput ladattiin jälkikäteen. Yleinen menettely.

Leikkauskohta oli lähdetiedoston merkinnässä, jonka takana olimme olettaneet näkyvän alueen loppuvan. Todellisuudessa sen takana olivat säännöt yläosan logolle, sen alapuolisille väleille ja sisääntuloille. Sivu siis rakentui ilman niitä ja siirtyi paikoilleen sekuntia myöhemmin.

Tulos: Cumulative Layout Shift arvolla 1,0 – ja siten 76 pistettä 100:n sijaan tietokoneella. Erityisen ikävää: paikallisesti jarrutetulla yhteydellä arvo oli 0, koska tyylitiedosto ehti sinne riittävän ajoissa. Virhe näkyi vain nopealla yhteydellä.

Opetus: joko koko tyylitiedosto dokumenttiin tai ei mitään. Osittainen upotus edellyttää, että tietää täsmälleen, mitä sääntöä näkyvällä alueella tarvitaan – eikä sitä tiedä kasvavalla sivulla koskaan pysyvästi.

Vinkki Taittohyppyjä epäiltäessä mittaa ilman jarrua. Testityökalu simuloidulla mobiiliyhteydellä toimittaa tiedoston riittävän aikaisin eikä näytä hyppyä. Se, joka mittaa vain niin, luulee ongelman ratkenneen.

Mikä toi vähän

Täydellisyyden vuoksi ne toimenpiteet, jotka ovat jokaisessa ohjeessa ja jotka meillä olivat tuskin mitattavissa:

Kuvaformaatit. Etusivullamme on tuskin lainkaan kuvia – logo on SVG-tiedosto. Siellä missä kuvia on, muunnos tietysti kannattaa; päävipuvarreksi siitä on vain kuvapainotteisilla sivuilla.

Kirjasinten pienentäminen edelleen. Isännöimme kahta kirjasinperhettä itse ja lataamme näkyvällä alueella tarvittavat ennakkoon. Lisäoptimointi olisi mahdollista mutta ei liikuta arvoa.

Palvelimen sijainti. Usein suositeltu, meidän tapauksessamme merkityksetön: aika ensimmäiseen tavuun oli jo 20 millisekuntia. Se, joka on siinä jo hyvässä asemassa, ei voita jakeluverkolla mitään.

Menettely perässä tehtäväksi

  1. Mittaa ennen kuin mitään muutetaan. Mobiili ja työpöytä erikseen, arvot muistiin.
  2. Etsi suurin siirretty tiedosto. Lähes aina se on JavaScriptiä. Kysymys ei ole siitä, miten se pienennetään, vaan siitä, tarvitaanko sitä.
  3. Tarkista pakkaus. Ei sitä, onko se päällä, vaan sitä, mille tiedostotyypeille.
  4. Laske estävät pyynnöt. Jokainen tyylitiedosto yläosassa viivyttää ensimmäistä piirtoa.
  5. Tarkista taittohypyt ilman jarrua. Se yksi testi, joka meiltä puuttui.
  6. Mittaa uudelleen jokaisen muutoksen jälkeen. Muuten ei lopussa tiedä, mikä vaikutti.
Prompt
Auta minua kääntämään sivuni PageSpeed-raportti järjestykseksi.
Ole ankara; älä kehu mitään.

Mittausarvoni:
- Mobiili: [pistemäärä], työpöytä: [pistemäärä]
- LCP, TBT, CLS laitteittain: [arvot]
- Suurimmat siirretyt tiedostot kokoineen: [lista]
- Renderöintiä estävät pyynnöt: [lista]
- Raportin ilmoitukset: [liitä teksti]

Sivusta:
- Miten se on rakennettu: [CMS / staattinen / sivunrakennin]
- Tarvitaanko JavaScriptiä näkyvään sisältöön? [kyllä/ei]
- Miten CSS toimitetaan? [ulkoisena / ennakkoon / osittain ennakkoon]

Tehtävät:
1. Liitä jokainen ilmoitus syyhyn ja kerro, mihin tunnuslukuun
   se vaikuttaa – LCP, TBT vai CLS.
2. Järjestä toimenpiteet vaikutuksen ja vaivan suhteen mukaan.
   Kerro kustakin, montako pistettä se realistisesti liikuttaa ja miksi.
3. Nimeä raportin toimenpiteet, joista minun rakennustavallani
   ei ole käytännössä hyötyä – ja perustele sen sijaan että
   jättäisit ne pois.
4. Kysy jokaisesta suuresta JavaScript-tiedostosta ensin, tarvitaanko
   sitä, ennen kuin ehdotat pienentämistä.
5. Huomauta, jos CSS toimitetaan vain osittain ennakkoon, ja selitä,
   miksi se voi olla CLS:n kannalta huonompi kuin ei lainkaan.
6. Kerro, mitä minun pitäisi mitata uudelleen jokaisen muutoksen jälkeen.

Älä keksi mittausarvoja.

Johtopäätös

Pistemäärä itsessään ei ole tavoite – se on mittausarvo, ei liiketoiminnan tulos. Merkitystä on sen takana olevalla kokemuksella: sivun, joka on luettavissa 1,4 sekunnin jälkeen, lukee useampi ihminen kuin sellaisen, joka tarvitsee kuusi sekuntia. Mobiiliverkon kautta tulevien kävijöiden kohdalla ero on suurempi kuin mikään tekstin optimointi.

Tie sinne kulki meidän tapauksessamme yhden toistuvan kysymyksen kautta: tarvitsemmeko tätä? Viisi kuudesta toimenpiteestä oli jonkin poistamista, ei lisäämistä.

Usein kysytyt kysymykset

Miten PageSpeed Insightsissa saavutetaan 100 pistettä?

Useimmilla verkkosivustoilla kolmen askeleen kautta: poista tai korvaa suurin JavaScript-tiedosto, kytke pakkaus todella päälle CSS:lle ja JavaScriptille, ja poista taittohypyt. Kuvaformaatit ja palvelimen sijainti ovat harvoin pullonkaula.

Kuinka tärkeä latausaika on Googlen sijoituksissa?

Se on vahvistettu tekijä mutta ei vahva – sisältö ja osuvuus painavat enemmän. Suurempi vaikutus on epäsuora: hitaat sivut keskeytetään useammin, ja tuo käytös vaikuttaa arviointiin.

Mikä on Cumulative Layout Shift ja miten se korjataan?

Mittausarvo elementeille, jotka vaihtavat paikkaansa ensimmäisen piirron jälkeen. Yleisimmät syyt: kuvat ilman kiinteitä mittoja, jälkikäteen ladatut tyylitiedostot ja kirjasimet, joiden metriikat poikkeavat voimakkaasti. Se korjataan varaamalla tila etukäteen – leveys- ja korkeustiedoilla tai kiinteällä kuvasuhteella.

Pitäisikö CSS upottaa HTML:ään?

Pienillä tyylitiedostoilla kyllä, mutta silloin kokonaan. Osittainen upotus loppujen jälkilatauksella säästää yhden pyynnön ja hankkii vastineeksi taittohyppyjä heti kun jokin näkyvän alueen sääntö puuttuu. Meillä se oli 7 kilotavua pakattuna – siihen täysi upotus kannattaa.

Kuinka paljon kirjastoista luopuminen tuo?

Meidän tapauksessamme suurimman yksittäisen erän: 458 kilotavun grafiikkakirjastosta tuli 6 kilotavua omaa koodia, lisäksi 114 kilotavun animaatiokirjasto nollaan. Kannattaako se, riippuu siitä, kuinka paljon kirjastosta oikeasti käyttää – mittaus osoittaa käyttämättömän JavaScriptin.

Markkinointi, joka pystyttää itsensä

Studio Enginen beta on auki. Varaa paikkasi ja ole mukana alusta asti.

Osallistu betaan →
← Takaisin listaukseen