Leuke Chrome-extensies die je browser niet vertragen
Decoratieve browserextensies hebben een reputatie, en die is meestal terecht: zwaar, praterig, en geïnstalleerd met een toestemmingenlijst die niemand heeft gelezen. Wat jammer is, want de categorie is echt leuk en elk van de problemen is te vermijden.
Drie dingen die de moeite waard zijn om te controleren
- De toestemmingenlijst. Chrome toont die voordat je installeert. Storage is een instellingenbestand. Tabs, cookies, history en webRequest zijn de toestemmingen waarmee een extensie kan volgen wat je bekijkt.
- Of het de layout van je pagina raakt. Een extensie die elementen in de documentflow invoegt, of elementposities meet bij elke scrollgebeurtenis, kan een vloeiende pagina laten haperen, hoe weinig ze ook tekent.
- Waar het verzoeken naar stuurt. Een decoratie met een druk netwerktabblad doet een tweede klus waar je niets over is gezegd.
Waarom layout de bijter is
Het lezen van een layout-eigenschap — de hoogte van een element, zijn positie op het scherm — dwingt de browser om al het lopende layoutwerk af te ronden voordat hij kan antwoorden. Doe dat binnen een scroll-handler en je hebt de browser gevraagd zestig keer per seconde te stoppen en te meten, op een pagina die hij nog maar half had getekend.
Dat is het mechanisme achter de meeste klachten van „deze extensie maakt scrollen haperig”, en het is onzichtbaar tot iemand het profileert. De oplossing is onopvallend: nooit layout lezen tijdens het scrollen, alleen transforms schrijven, en de compositor het bewegen laten doen.
Hoe dat er hier uitziet
scrolldog is een klein pixelhuisdier dat langs de rand van elke pagina rent op jouw scrolsnelheid. Het is ook een uitgewerkt voorbeeld van de controles hierboven, want het moest ze doorstaan om leefbaar te zijn:
- Twee toestemmingen: storage en unlimitedStorage. Geen tabs, geen cookies, geen history, geen webRequest.
- Één hosttoestemming — api.scroll.dog — gebruikt om een licentie te controleren, nooit om de pagina aan te raken waarop je bent.
- Het huisdier leeft in een vaste baan zonder afmeting en schrijft alleen ooit een CSS-transform, zodat de layout van je eigen pagina nooit verandert.
- Er wordt passief naar scrollen geluisterd, samengevoegd tot één schrijfactie per animatieframe.
- Één schakelaar verwijdert het direct uit elk open tabblad.
Niets daarvan is opschepperij — het is het minimum. Iets waarvan de hele taak is om leuk te zijn om naar te kijken, heeft geen enkele reden om iets trager te maken.
Bekijk de hond