De unload-gebeurtenis wordt beëindigd

Gepubliceerd: 10 augustus 2023, Laatst bijgewerkt: 29 januari 2026

De unload gebeurtenis zal geleidelijk worden uitgefaseerd door de standaardinstellingen stapsgewijs aan te passen, zodat unload handlers niet langer worden geactiveerd op pagina's, tenzij een pagina er expliciet voor kiest om ze opnieuw in te schakelen.

Tijdschema voor uitfasering

We merkten al in januari 2019 op dat het gedrag van de unload-functie waarschijnlijk zou veranderen, toen we onze intentie aankondigden om een ​​back/forward-cache te implementeren . Parallel aan de implementatie hebben we een grootschalige campagne gevoerd, wat resulteerde in een aanzienlijke daling van het gebruik van de unload-functie . Als aanvulling op deze campagne zijn we ook begonnen met het aanbieden van mogelijkheden om het effect van het afschaffen van de unload-functie vanaf Chrome 115 te testen.

In de loop van 2024 hebben we verschillende problemen aangepakt die de start van de uitrol belemmerden, en in de loop van 2025 hebben we de uitfasering uitgerold naar de 50 belangrijkste websites.

Mijlpaal Mijlpaaldatum Top 50 websites % van andere oorsprong
135 26 maart 2025 1 ( www.google.com ) 0
139 30 juli 2025 5 0
140 27 augustus 2025 10 0
141 24 september 2025 25 0
142 22 oktober 2025 50 0
Tijdschema voor het uitfaseren van de 50 meest bezochte websites.

Nu we de uitfasering voor de 50 meest gebruikte sites hebben afgerond, hebben we verdere goedkeuring gekregen om dit in 8 fasen (of ongeveer 32 weken) uit te rollen naar alle sites, zoals gedetailleerd in de volgende tabel.

Mijlpaal Mijlpaaldatum Top 50 websites Percentage van Chrome-paginaladingen voor alle sites
146 10 maart 2026 50 1
147 7 april 2026 50 5
148 5 mei 2026 50 10
149 2 juni 2026 50 20
150 30 juni 2026 50 40
151 28 juli 2026 50 60
152 25 augustus 2026 50 80
153 22 september 2026 50 100
Tijdschema voor de uitfasering van alle websites.

De volledige uitrol is gebaseerd op paginaweergaven (met consistentie in de tijd), in plaats van op individuele gebruikers of sites, om te voorkomen dat bepaalde gebruikers of sites meer worden getroffen dan anderen, zoals beschreven in het voornemen tot uitfasering .

Houd er rekening mee dat we ook een menu met opt-out-opties aanbieden voor het geval deze afbouwperiode niet voldoende tijd biedt om van unload over te stappen. Ons doel is om deze geleidelijke afbouw te gebruiken als basis voor de planning van de laatste fase ( de definitieve afbouw van unload ), waarin deze opt-out-opties zullen worden verwijderd of beperkt.

Tijdlijn van de uitfasering van de unload-functie.
Tijdlijn van de uitfasering van de unload-functie.

Achtergrond

unload is ontworpen om te worden uitgevoerd wanneer het document wordt afgesloten. In theorie kan deze functie worden gebruikt om code uit te voeren wanneer een gebruiker een pagina verlaat, of als een callback-functie aan het einde van een sessie.

Scenario's waarin deze gebeurtenis het meest werd gebruikt, zijn onder andere:

  • Gebruikersgegevens opslaan : Sla gegevens op voordat u de pagina verlaat.
  • Opruimtaken uitvoeren : geopende bronnen sluiten voordat de pagina wordt verlaten.
  • Analysegegevens verzenden : Gegevens met betrekking tot gebruikersinteracties verzenden aan het einde van de sessie.

Het unload de gegevens is echter uiterst onbetrouwbaar .

Op desktopversies van Chrome en Firefox is unload redelijk betrouwbaar, maar het heeft een negatieve invloed op de prestaties van een website doordat het gebruik van bfcache (back/forward cache) wordt geblokkeerd.

Op mobiele browsers wordt unload vaak niet uitgevoerd, omdat tabbladen regelmatig naar de achtergrond worden geplaatst en vervolgens worden gesloten. Om die reden geven browsers op mobiele apparaten prioriteit aan bfcache boven unload , waardoor ze nog onbetrouwbaarder worden. Safari gebruikt dit gedrag ook op desktops.

Het Chrome-team is van mening dat het gebruik van het mobiele model, waarbij bfcache prioriteit krijgt boven unload , op desktops storend zou zijn en de betrouwbaarheid ervan zou verminderen . Voorheen was dit in Chrome (en Firefox) juist redelijk betrouwbaar. Daarom wil Chrome de unload gebeurtenis volledig verwijderen. Tot die tijd blijft de functie betrouwbaar op desktops voor gebruikers die zich expliciet hebben afgemeld voor deze afschaffing.

Waarom wordt de unload gebeurtenis afgeschaft?

Het afschaffen van unload is een belangrijke stap in een bredere erkenning van het web waarin we nu leven. De unload gebeurtenis geeft een vals gevoel van controle over de levenscyclus van de applicatie, wat steeds minder overeenkomt met hoe we tegenwoordig op het web surfen.

Mobiele besturingssystemen bevriezen of sluiten webpagina's regelmatig af om geheugen te besparen, en desktopbrowsers doen dit nu ook steeds vaker om dezelfde redenen. Zelfs zonder tussenkomst van het besturingssysteem wisselen gebruikers zelf vaak tussen tabbladen en sluiten ze oude tabbladen af ​​zonder de pagina's formeel te verlaten.

Het verwijderen van de unload gebeurtenis als verouderd is een erkenning dat wij als webontwikkelaars ervoor moeten zorgen dat ons paradigma aansluit bij de realiteit en niet afhankelijk zijn van verouderde concepten die niet langer opgaan – als ze dat al ooit deden.

Alternatieven voor unload van gebeurtenissen

In plaats van unload wordt aangeraden om het volgende te gebruiken:

  • visibilitychange : Hiermee wordt bepaald wanneer de zichtbaarheid van een pagina verandert. Dit gebeurt wanneer de gebruiker van tabblad wisselt, het browservenster minimaliseert of een nieuwe pagina opent. Beschouw de hidden status als het laatste betrouwbare moment waarop app- en gebruikersgegevens zijn opgeslagen.
  • pagehide : Deze gebeurtenis wordt gebruikt om te bepalen wanneer de gebruiker de pagina heeft verlaten. Dit gebeurt wanneer de gebruiker de pagina verlaat, de pagina opnieuw laadt of het browservenster sluit. De pagehide gebeurtenis wordt niet geactiveerd wanneer de pagina wordt geminimaliseerd of naar een ander tabblad wordt overgeschakeld. Houd er rekening mee dat, aangezien pagehide een pagina niet ongeschikt maakt voor de back/forward-cache, het mogelijk is dat een pagina kan worden hersteld nadat deze gebeurtenis is geactiveerd. Als u in deze gebeurtenis resources opschoont, moeten deze mogelijk opnieuw worden hersteld wanneer de pagina wordt hersteld.

De beforeunload gebeurtenis heeft een iets ander gebruiksdoel dan unload , omdat het een annuleerbare gebeurtenis is. Het wordt vaak gebruikt om gebruikers te waarschuwen voor niet-opgeslagen wijzigingen bij het verlaten van een venster. Deze gebeurtenis is echter onbetrouwbaar, omdat deze niet wordt geactiveerd als een tabblad op de achtergrond wordt gesloten. Het is aan te raden het gebruik van beforeunload te beperken en het alleen voorwaardelijk toe te voegen . Gebruik in plaats daarvan de eerder genoemde gebeurtenissen voor de meeste vervangingen unload .

Zie voor meer informatie dit advies over het nooit gebruiken van de unload handler .

Detecteer het gebruik van unload

Er zijn verschillende tools waarmee je kunt achterhalen of de unload -gebeurtenis op pagina's voorkomt. Hierdoor kunnen websites ontdekken of ze deze gebeurtenis gebruiken – in hun eigen code of via libraries – en dus mogelijk getroffen worden door de aanstaande afschaffing ervan.

Chrome-ontwikkelaarstools

Chrome DevTools bevat een back-forward-cache audit waarmee u problemen kunt opsporen die ervoor kunnen zorgen dat uw pagina niet in aanmerking komt voor back-forward-caching, waaronder het gebruik van de unload handler.

Volg deze stappen om de back/forward-cache te testen:

  1. Open op je pagina de ontwikkelaarstools en ga vervolgens naar Toepassing > Achtergrondservices > Back/forward cache .

  2. Klik op 'Terug/Vooruit cache testen'. Chrome brengt je automatisch naar chrome://terms/ en vervolgens terug naar je pagina. Je kunt ook de terug- en vooruitknoppen van de browser gebruiken.

Als uw pagina niet in aanmerking komt voor back/forward-caching, toont het tabblad Back/forward-cache een lijst met problemen. Onder 'Actiepunten' kunt u zien of u unload gebruikt.

De Chrome DevTools-tool voor het testen van de back/forward-cache laat zien dat er een unload-handler is gebruikt.
Chrome DevTools: hulpmiddel voor het testen van de back/forward cache.

Rapportage-API

De rapportage-API kan in combinatie met een alleen-lezen toegangsbeleid worden gebruikt om het gebruik van unload door websitegebruikers te detecteren.

Zie voor meer informatie: De rapportage-API gebruiken om lossingen te vinden.

Bfcache notRestoredReasons -API

De eigenschap notRestoredReasons —toegevoegd aan de klasse PerformanceNavigationTiming rapporteert informatie over de vraag of documenten werden geblokkeerd voor het gebruik van de bfcache tijdens navigatie, en waarom. Dit is een voorbeeld van hoe het responsobject eruitziet dat waarschuwt voor een bestaande unload listener:

{
   children: [],
   id: null,
   name: null,
   reasons: [
     {"reason", "unload-listener"}
   ],
   src: null,
   url: "https://www.example.com/page/"
}

Beheer de toegang tot unload

Chrome zal de unload gebeurtenis geleidelijk uitfaseren. In de tussentijd kunt u verschillende tools gebruiken om dit gedrag te beheren en u voor te bereiden op de aanstaande uitfasering. Houd er rekening mee dat u op de lange termijn niet op deze technieken moet vertrouwen en dat u zo snel mogelijk moet overstappen op alternatieven.

Met de volgende opties kunt u unload handlers in- of uitschakelen om te testen hoe uw site zonder deze handlers zou werken, zodat u zich kunt voorbereiden op de aanstaande uitfasering. Er zijn verschillende soorten beleidsregels:

  • Toegangsbeleid : Dit is een platform-API waarmee site-eigenaren de toegang tot functies kunnen beheren, op site- of paginaniveau, met behulp van HTTP-headers.
  • Bedrijfsbeleid : Hulpmiddelen voor IT-beheerders om Chrome te configureren voor hun organisatie of bedrijf. Dit kan worden geconfigureerd via een beheerderspaneel, zoals de Google Admin Console .
  • Chrome-vlaggen : Hiermee kan een individuele ontwikkelaar de instelling voor het afschaffen van de unload -functie wijzigen om de impact ervan op verschillende websites te testen.

Toestemmingsbeleid

Vanaf Chrome versie 115 is er een machtigingsbeleid toegevoegd waarmee websites kunnen afzien van het gebruik van unload handlers en direct kunnen profiteren van bfcache om de siteprestaties te verbeteren. Bekijk deze voorbeelden om te zien hoe u dit voor uw site kunt instellen . Dit stelt websites in staat om de uitfasering van unload handlers voor te zijn.

In Chrome 117 wordt dit uitgebreid, zodat websites het omgekeerde kunnen doen en ervoor kunnen kiezen om te blijven proberen unload handlers te activeren, aangezien Chrome de standaardinstelling hiervoor in de toekomst wijzigt naar niet-activeren. Zie deze voorbeelden over hoe u kunt blijven toestaan ​​dat unload-handlers voor uw website worden geactiveerd . Deze opt-in blijft niet permanent en moet worden gebruikt om websites de tijd te geven om over te stappen van unload handlers naar een ander systeem.

Ondernemingsbeleid

Bedrijven met software die afhankelijk is van de unload -gebeurtenis voor een correcte werking, kunnen het beleid ForcePermissionPolicyUnloadDefaultEnabled gebruiken om de geleidelijke uitfasering voor apparaten onder hun beheer te voorkomen. Door dit beleid in te schakelen, blijft unload standaard ingeschakeld voor alle origins. Een pagina kan desgewenst nog steeds een strenger beleid instellen. Net als de opt-out voor het machtigingsbeleid is dit een hulpmiddel om potentiële ingrijpende wijzigingen te beperken, maar het mag niet onbeperkt worden gebruikt.

Chrome-vlaggen en commandoregelopties

Naast het bedrijfsbeleid kunt u de afschaffing ook voor individuele gebruikers uitschakelen met behulp van Chrome-vlaggen en opdrachtregelopties:

Door chrome://flags/#deprecate-unload this op enabled te zetten, wordt de standaardwaarde voor het afschaffen van de functie geactiveerd en worden unload handlers niet meer uitgevoerd. Deze handlers kunnen nog steeds per site worden overschreven met behulp van het machtigingsbeleid, maar zullen standaard wel blijven werken.

Deze instellingen kunnen ook worden beheerd via opdrachtregelparameters .

Vergelijking van opties

De volgende tabel geeft een overzicht van de verschillende toepassingen van de eerder besproken opties:

Versnel de afschrijving. Vervroeg de afschaffing (met uitzonderingen) Voorkom dat functies verouderd raken om tijd vrij te maken voor een migratie.
Toestemmingsbeleid
(Van toepassing op pagina's/sites)
Ja Ja Ja
Ondernemingsbeleid
(geldt voor apparaten)
Nee Nee Ja
Chrome-vlaggen
(geldt voor individuele gebruikers)
Ja Nee Nee
Chrome-opdrachtregelopties
(geldt voor individuele gebruikers)
Ja Nee Ja

Conclusie

unload handlers worden uitgefaseerd. Ze zijn al lange tijd onbetrouwbaar en het is niet gegarandeerd dat ze in alle gevallen worden geactiveerd wanneer een document wordt verwijderd. Bovendien zijn unload handlers incompatibel met bfcache .

Websites die gebruikmaken van unload handlers moeten zich voorbereiden op deze aanstaande uitfasering door te controleren of er nog unload handlers bestaan, deze te verwijderen of te migreren, of, als laatste redmiddel, de uitfasering uit te stellen als meer tijd nodig is.

Dankbetuigingen

Met dank aan Kenji Baheux, Fergal Daly, Adriana Jara en Jeremy Wagner voor hun hulp bij het nakijken van dit artikel.

Hoofdafbeelding door Anja Bauermann op Unsplash