Nuttede Chrome-udvidelser, der ikke gør din browser langsom
Dekorative browserudvidelser har et ry, og det er for det meste fortjent: tunge, snakkesalige, og installeret med en tilladelsesliste ingen læste. Hvilket er en skam, for kategorien er ægte sjov, og hvert eneste problem kan undgås.
Tre ting det er værd at tjekke
- Tilladelseslisten. Chrome viser den, før du installerer. Storage er en indstillingsfil. Tabs, cookies, history og webRequest er dem, der lader en udvidelse holde øje med, hvad du surfer på.
- Om den rører ved din sides layout. En udvidelse, der indsætter elementer i dokumentflowet, eller måler elementers position ved hver scrollehændelse, kan få en ellers glidende side til at hakke, uanset hvor lidt den tegner.
- Hvor den sender forespørgsler. Pynt med en travl netværksfane laver et andet job, du ikke fik at vide om.
Hvorfor layout er det, der bider
At læse en layout-egenskab — et elements højde, dets position på skærmen — tvinger browseren til at afslutte alt ventende layoutarbejde, før den kan svare. Gør det inde i en scrollehandler, og du har bedt browseren om at stoppe og måle tres gange i sekundet, på en side, den var halvvejs igennem at tegne.
Det er mekanikken bag de fleste klager over, at ”den her udvidelse gør scrolling sløvt”, og den er usynlig, indtil nogen profilerer den. Løsningen er uglamourøs: læs aldrig layout under en scrolling, skriv kun transforms, og lad compositoren stå for bevægelsen.
Sådan ser det ud her
scrolldog er et lille pixel-kæledyr, der løber langs kanten af hver side i din scrollehastighed. Det er også et gennemarbejdet eksempel på tjeklisten ovenfor, fordi det måtte bestå den for at være til at holde ud at have kørende:
- To tilladelser: storage og unlimitedStorage. Ingen tabs, ingen cookies, ingen history, ingen webRequest.
- Én værttilladelse — api.scroll.dog — brugt til at tjekke en licens, aldrig til at røre den side, du er på.
- Kæledyret lever i et fast spor med nulstørrelse og skriver kun nogensinde en CSS-transform, så din sides egen layout ændrer sig aldrig.
- Scrolling aflyttes passivt og samles til én skrivning per animationsbillede.
- Én kontakt fjerner den fra hvert åbent faneblad øjeblikkeligt.
Intet af det er pral — det er minimum. En ting, hvis eneste job er at være rar at se på, har ingen grund til at gøre noget som helst langsommere.
Se hunden