← Område 7 Uppgift · Optimering och diskret funktionalitet Felsökning

Webbutveckling 1 · område 7 · uppgift

Projekt 6 – Optimerad och diskret sajt

Det här är områdets kravdokument. Optimeringsguiden, fördjupningsguiden och genomgångarna ska stödja kraven nedan – inte tvärtom.

1. Uppdraget

Du ska göra din sajt lättare och tåligare. Lättare: bilderna ska väga en bråkdel av vad de väger nu, och du ska kunna visa hur mycket med en mätning före och efter. Tåligare: sajten ska fungera även när JavaScript inte gör det.

Ingenting nytt ska byggas. Sajten ska se likadan ut när du är klar – den ska bara komma fram fortare och hålla bättre.

Det är den sista uppgiften före slutprojektet, och den är därför också en genomgång av allt du byggt: område 2:s struktur, 3:s form, 4:s tillgänglighet och 6:s moduler ska alla stå pall när du mäter och stänger av.

2. Vilken sajt gäller det?

Samma sajt som i Projekt 5, i samma repo.

Har du av något skäl ingen fungerande sajt med moduler: hämta referensprojekt/ ur områdets material och arbeta med den. Säg till innan du gör det, så att vi vet att du gör det medvetet. Den vägen ger E och C – A kräver att du arbetar i något du byggt själv.

3. De två halvorna

LektionHandlar om
Optimering63–64Bilder, filer, laddtid. Mätbart i kilobyte och sekunder
Diskret funktionalitet65–66Att sajten fungerar utan JavaScript

De är olika sorters arbete. Optimeringen är mekanisk och går fort när du vet hur. Den diskreta delen kräver att du läser din egen kod och tänker om på några ställen.

Börja med optimeringen. Den går att göra klart före sportlovet, och då har du de tre sista veckorna på den andra halvan.

4. Kraven

Kryssa av allt eftersom. Kryssen sparas i din webbläsare.

Alla elva ska vara uppfyllda.

Ska-krav — nivå E

Bör-krav — mot nivå C

Utmaning — mot nivå A

5. Tekniska krav

KravVarför
Inga bibliotek, inga ramverkSamma regel som i Projekt 5
Inga style=-attribut i HTML:enStil hör i stilmallen. Gällde från område 3
Inget innerHTML för text som kommer utifrånSäkerhetsregeln från Projekt 5
Relativa sökvägar, gemener i filnamnSajten ska fungera publicerad
Originalbilderna sparas utanför repotEtt repo ska inte innehålla 40 MB kameraoriginal
Bilder du inte använder tas bort ur bilder/Skräp förvirrar den som rättar, och dig själv

Det här lämnas in

I itslearning: länken till ditt publika GitHub-repo. Inget annat, och inte koden.

I repot ska finnas:

index.html och dina övriga sidor
stil.css
js/
bilder/          bara de bilder sajten använder, i rätt storlekar
README.md        med mätningen och testet

Så kan mätavsnittet se ut

Två rubriker i README.md. Det här är lydelsen som bedöms, och den behöver inte vara längre än så här:

## Mätning

Startsidan, nätverksfliken med Disable cache och Slow 4G,
på den publicerade adressen:

  Före:  12 requests, 3,4 MB, 14,2 s
  Efter:  9 requests, 210 kB,  1,6 s

Tyngsta filen före var hero.jpg: 2,9 MB, 4032 px bred,
visades i 640 px. Den är nu tre filer – 400, 800 och
1600 px – i WebP med JPEG som reserv, och den som hämtas
på min telefon väger 18 kB. Resten av minskningen är de
fyra bilderna på galleri.html, som fick loading="lazy"
och halverad bredd.

## Testat utan JavaScript

Avstängt i Inspektera 4 mars, alla fem sidorna:

  index.html      OK. Allt innehåll finns, inga döda knappar
  galleri.html    OK. Filterraden gömd, alla bilder syns
  kontakt.html    OK. required kvar, webbläsaren validerar själv
  om.html         OK
  quiz.html    Knappen "Rätta" syns och gör inget.
               Medvetet: den är type="submit", sidan
               laddas om. Frågorna finns kvar

6. Bedömningsmatris

DelECA
BildstorlekBilderna är skalade till sin ruta och ligger i ett modernt formatFlera storlekar med srcset och sizes som stämmer med CSS:enpicture med formatfallback, och valen går att motivera per bild
MätningEn mätning före och efter finnsMätningen är kommenterad: vad som var tyngst och varför siffran ändradesLighthouse-listan är genomgången och kvarvarande rader är förklarade
Utan JavaScriptIngenting kraschar, inget innehåll försvinner, inga döda kontrollerMinst en modul förbättrar något som redan fungerar utan denHela sajten degraderar medvetet, och du kan förklara varje funktion
Egen kod–Modulernas anpassningar är gjorda i ÄNDRA HÄR-zonenEgen diskret funktion skriven ur reglerna, med kapsel och kontroller
Tillgänglighetalt på varje bild, label på varje fältFormuläret validerar i HTML och skriptet förbättrararia-live där något ändras, och checkValidity() styr felen
DokumentationMätningen står i README.mdTestet utan JavaScript är dokumenterat sida för sidaJämförelsen diskret mot hårdkodad finns och håller

Matrisen läses vågrätt: en A-kolumn förutsätter att E och C i samma rad är gjorda.

7. Kom igång – de tre första sakerna

  1. Mät innan du ändrar något. Öppna din publicerade sajt, nätverksfliken, Disable cache, ladda om. Skriv av talen. Du kan inte visa en förbättring du inte har ett före-värde till.
  2. Sortera på Size och titta på översta raden. Det är nästan alltid en bild, och det är nästan alltid över hälften av hela sidans vikt.
  3. Gör om den ena bilden. Skala, komprimera, byt format, lägg in width och height. Mät igen. Nu vet du hur mycket en bild är värd, och resten är samma sak en gång till.

8. Så ligger tiden

VeckaLektionerBör vara klart
v.663 tis 9/2 · 64 fre 12/2Mätningen före är gjord. Den tyngsta bilden är åtgärdad
v.7sportlov–
v.865 mån 22/2 · 66 tis 23/2 · 67 fre 26/2Alla bilder klara. Du vet vad som går sönder utan JavaScript
v.968 mån 1/3 · 69 tis 2/3Ska-kraven 7–10 är uppfyllda. Mätningen efter är gjord
v.1070 mån 8/3 · 71 tis 9/3 · 72 fre 12/3Bör-kraven, A-spårets egen funktion, README.md. Deadline fredag 12/3 23:59
v.1173 mån 15/3Prov 5

Fredag 5 mars är ledig, så vecka 9 har bara två lektioner. Veckan efter sportlovet är den viktigaste: det är då den diskreta halvan ska landa, och den tar längre tid än optimeringen.

Prov måndag 15 mars

Provet bygger på områdets exempelsajt i två versioner, inte på din egen. Det kommer att fråga om skillnaden mellan dem.

9. Checklista innan du lämnar in

Bilderna

  1. Ingen bild är mer än dubbelt så bred som rutan den visas i
  2. Foton ligger i WebP eller AVIF
  3. width och height på varje img, utan px
  4. alt på varje img
  5. loading="lazy" på allt under första skärmen, men inte på den översta bilden
  6. Oanvända bilder är borta ur bilder/

Mätningen

  1. Före och efter står i README.md
  2. Mätt på den publicerade adressen, med Disable cache
  3. Samma sida mätt båda gångerna

Utan JavaScript

  1. Avstängt i Inspektera, varje sida öppnad
  2. All text och alla bilder finns
  3. Ingen knapp eller länk som syns men inte gör något
  4. Formulären går att fylla i, required finns kvar
  5. Resultatet nerskrivet i README.md

Det vanliga

  1. HTML validerar
  2. CSS validerar
  3. Konsolen är tom på varje sida
  4. Repot är publikt
  5. Länken inlämnad i itslearning

10. Felsökning

12 rader

ProblemTrolig orsakGör så här
Mätningen visar samma siffra efteråtCachenDisable cache i, ladda om
Bilden är suddig efter optimeringenFör hårt komprimerad, eller för liten filGå upp i kvalitet, eller lägg till en större storlek
srcset verkar inte göra någotFönstret är lika brett båda gångernaTesta vid 400 px och vid 1400 px
Alltid samma fil hämtassizes stämmer inte med CSS:enJämför talet i sizes med max-width i stilmallen
Validatorn klagar på width="800px"Enhet i attributetTa bort px
Knappen syns utan JavaScripthidden saknasLägg till hidden, låt skriptet ta bort det
Knappen syns fast hidden står därEn display-regel i CSS:enSkriv :not([hidden]) på regeln
Bilder försvinner utan JavaScriptSkriptet skriver in demFlytta dem till HTML:en
Formuläret går att skicka tomtnovalidate i HTML:en, eller required saknasrequired i HTML:en, novalidate bara från skriptet
Sajten fungerar lokalt men inte publiceradStor bokstav i ett filnamn, eller absolut sökvägGemener, relativa sökvägar
Lighthouse ger 60 i PerformanceNästan alltid bildernaLäs Opportunities uppifrån
Konsolen har ett rött fel efter optimeringenEn bild bytte namn men inte i HTML:en404-raden säger vilken