Case study sulle prestazioni delle app Web progressive di Tinder
Tinder ha da poco avvenimento leggere rapidamente il pollice immediatamente sul Web. La loro mutamento app reattiva Progressive Web – Tinder Online – e disponibile a causa di il 100% degli utenti sopra desktop e dispositivi mobili, impiegando tecniche per l’ ottimizzazione delle prestazioni JavaScript , Service Worker in la resilienza della insidia e notifiche push in il coinvolgimento durante chat. Attualmente esamineremo alcuni dei loro insegnamenti sul web perf.
Cammino incontro un’app Web progressiva
Tinder Online e aderente mediante l’obiettivo di raggiungere l’adozione con nuovi mercati, cercando di conseguire la bilanciamento di efficienza per mezzo di la V1 dell’esperienza di Tinder circa altre piattaforme.
L’MVP in PWA ha impiegato 3 mesi in l’implementazione utilizzando React mezzo biblioteca dell’interfaccia utente e Redux per la gestione dello situazione. Il conseguenza dei loro sforzi e una PWA cosicche offre l’esperienza di inizio di Tinder nel 10% dei costi di affare sui dati in qualcuno per un traffico dispendioso o unitamente pochi dati:
I primi segnali mostrano un buon deflusso, messaggistica e estensione della seduta adempimento all’app nativa. Con il PWA:
I dispositivi mobili per mezzo di cui gli utenti di Tinder Online accedono ancora solitamente alla loro competenza web includono:
Segno: Rick Viscomi ha poco tempo fa esercitato CrUX contro PerfPlanet e Inian Parameshwaran ha annebbiato rUXt attraverso una migliore visualizzazione di questi dati verso i primi 1 sacco di siti.
Testando la mutamento esperienza circa WebPageTest e Lighthouse (utilizzando il Galaxy S7 contro 4G) possiamo assistere in quanto sono per grado di addossarsi e divenire interattivi mediante tranne di 5 secondi :
Comprensibilmente c’e molto estensione attraverso migliorarlo ulteriormente sull’hardware amovibile medio (come il Moto G4), giacche e con l’aggiunta di contenuto dalla CPU:
Tinder sta lavorando duramente in ottimizzare la propria prova e non vediamo l’ora di provare dire del loro fatica sulle prestazioni web nel adiacente destino.
Razionalizzazione delle prestazioni
Tinder e successo a perfezionare la rapidita unitamente cui le loro pagine potevano porsi e farsi interattive di sbieco una serie di tecniche. Hanno implementato la divisione del codice basata sul prassi, istruito stanziamento in le prestazioni e registrazione nella cache delle risorse a lungo termine.
Ripartizione del combinazione an altezza di cammino
Tinder inizialmente aveva pacchetti JavaScript monolitici di grandi dimensioni cosicche ritardavano la velocita unitamente cui la loro vicenda poteva farsi interattiva. Questi bundle contenevano codice giacche non eta tra poco ovvio durante avviare l’esperienza cliente di principio, quindi poteva avere luogo suddiviso utilizzando la spartizione del legge . Durante gamma e entrata assegnare solo il codice perche gli utenti hanno indigenza con anticipazione e aumentare il rimanenza sopra basamento alle esigenze .
Attraverso convenire cio, Tinder ha consumato React Router e React Loadable . Poiche la loro cura centralizzava tutto il loro viaggio e rendeva le informazioni una inizio di sembianza, hanno trovato agevole implementare la suddivisione del legge al quota ancora cima.
Sopra riassunto:
React Loadable e una piccola scansia di James Kyle a causa di delineare con l’aggiunta di sciolto la frazionamento del manoscritto incentrata sui componenti durante React. Caricabile e un partecipante di ordine disinteressato (una funzione in quanto crea un socio) affinche semplifica la divisione dei pacchetti a livello di socio.
Supponiamo di sentire coppia componenti “A” e “B”. Avanti della spartizione del codice, Tinder importava staticamente insieme (A, B, ecc.) Nel loro bundle capitale. Corrente era scadente per quanto non avevamo stento di A e B improvvisamente:
Dopo aver accessorio la divisione del legge, i componenti A e B possono risiedere caricati maniera e in quale momento ovvio. Tinder lo ha evento introducendo React Loadable, dynamic import () e la sintassi dei commenti magici di webpack (per definire i blocchi dinamici) nel loro JS:
Attraverso il chunking “vendor” (scaffale), Tinder ha impiegato il webpack CommonsChunkPlugin attraverso anticipare le librerie di solito citta per percorsi furbo a un singolo file bundle che poteva abitare memorizzato nella cache a causa di periodi di eta oltre a lunghi:
Successivamente, Tinder ha usato il appoggio del precaricamento di React Loadable attraverso precaricare le potenziali risorse in la vicenda successiva sul partecipante di esame:
Tinder ha ed consumato i Service Worker verso precacheggiare tutti i bundle a grado di route e allegare route perche gli utenti hanno con l’aggiunta di caso di ispezionare nel bundle principale senza spartizione del combinazione. Comprensibilmente stanno addirittura usando ottimizzazioni comuni mezzo la minimizzazione JavaScript contatto UglifyJS:
Dietro aver istruito la frazionamento del legge basata su route, le dimensioni del bundle responsabile sono passate da 166 KB a 101 KB e DCL e migliorato da 5,46 a 4,69:
Immagazzinamento nella cache delle risorse a lento traguardo
Coprire la archiviazione nella cache a diluito compimento dell’output delle risorse statiche da brandello di webpack trae agevolazione dall’utilizzo di [chunkhash] a causa di accludere un buster della cache a ciascun file.