Case study sulle prestazioni delle app Web progressive di Tinder


Case study sulle prestazioni delle app Web progressive di Tinder

Tinder utilizzava una sequela di librerie open source (vendor) che parte del loro antenna delle dipendenze. Le modifiche a queste librerie dare inizio avrebbero arrecato la ritocco di [chunkhash] e l’invalidazione della loro cache. Attraverso sistemare questo problema, Tinder ha incominciato a fissare una whitelist di dipendenze esterne e a spartire il manifest del fagotto web dal agglomerato direttore verso ottimizzare la archiviazione nella cache. La misura del bundle e allora di pressappoco 160 KB a causa di l’uno e l’altro i blocchi.

Precaricamento delle risorse scoperte mediante proroga

Tinder ha implementato il aiuto durante precaricare i bundle JavaScript / webpack critici che erano importanti per l’esperienza di principio. Questo ha modesto il opportunita di carica di 1 assistente e la anzi pittura da 1000 ms a pressappoco 500 ms.

Stanziamento delle prestazioni

Tinder ha abituale bilancio durante il produttivita durante aiutarli a giungere i loro obiettivi di interesse megafuckbook sui dispositivi mobili. Che ha notato Alex Russell con ” Te lo puoi concedere ?: bilancio in le prestazioni del umanita evidente “, hai un estremita di movimento ristretto per concedere un’esperienza in quale momento si considerano le connessioni 3G oculare utilizzate circa hardware mobile medio.

A causa di procurarsi e rimanere interattivi prontamente, Tinder ha dato un stanziamento di

155 KB in i blocchi principali e del grossista, i blocchi asincroni (caricati pigramente) sono

55 KB e prossimo blocchi sono

35 KB. CSS ha un estremita di 20 KB. Presente e stato primario per proteggere che fossero in piacere di evitare il arretramento delle prestazioni.

Esame del pacchetto Webpack

Webpack Bundle Analyzer ti consente di trovare modo appare il diagramma delle dipendenze verso i tuoi bundle JavaScript con sistema da poter scoprire qualora ci sono frutti bassi da cercare la soluzione migliore.

Tinder ha usato Webpack Bundle Analyzer in rivelare aree di perfezionamento:

  • Polyfills: Tinder si rivolge ai browser moderni unitamente la loro bravura, ma supporta di nuovo IE11 e Android 4.4 e versioni successive. Per custodire polyfill e etichetta transpilato al meno, usano For polyfills, usanobabel-preset-envecore-js.
  • Abituato piusnellodelle librerie: Tinder ha sostituito localForage unitamente l’uso rivolto di IndexedDB.
  • Migliore ripartizione: separa i componenti dai pacchetti principali che non erano necessari verso la prima descrizione / interattiva
  • Riutilizzo del manoscritto: sono stati creati blocchi comuni asincroni con blocchi astratti utilizzati piuttosto di tre volte dai figli.
  • CSS: Tinder ha di nuovo rimosso i CSS critici dai loro bundle principali (perche erano passati al rendering parte server e fornivano comunque attuale CSS)
  • Webpack Bundle Analyzer puo abitare compreso nella configurazione di Webpack. La fisionomia di Tinder e paragonabile a questa:

    Piano CSS

    Tinder utilizza Atomic CSS per eleggere stili CSS altamente riutilizzabili. Tutti questi stili CSS atomici sono inline nella colore introduttivo e porzione del avanzo del CSS viene sistemato nel carta di stile (inclusi gli stili di eccitazione ovvero di supporto / riattivazione). Gli stili critici hanno una grandezza prassi di 20 KB unitamente livellamento gzip, per mezzo di build recenti in quanto arrivano a una grandezza

    Tinder Online utilizza anche il plug- durante PostCSS Autoprefixer a causa di considerare CSS e aggiungere prefissi del piazzista sopra principio alle regole di Posso impiegare :

    Rimandare il attivita non arduo insieme requestIdleCallback ()

    A causa di perfezionare le prestazioni di runtime, Tinder ha scelto di prendere requestIdleCallback () verso rinviare le azioni non critiche sopra periodo di inattivita.

    Uso di requestIdleCallback () attraverso i beacon di orchestrazione nello spazio di lo scorrimento:

    Aggiornamenti delle dipendenze

    Webpack 3 + Scope Hoisting

    Nelle versioni precedenti di webpack, nel corso di il riunione di tutti elemento nel blocco sarebbe governo inserito in singole chiusure di funzioni. Queste funzioni wrapper hanno reso ancora lenta l’esecuzione di JavaScript nel browser. Webpack 3 ha pratico il “sollevamento dell’ambito”: la competenza di unire l’ambito di tutti i moduli mediante un’unica compimento e lasciare al manoscritto di portare un tempo di osservanza con l’aggiunta di fulmineo nel browser. Lo fa con il plugin Module Concatenation:

    Reagisci 16

    React 16 ha istruito miglioramenti giacche hanno ridotto la rilievo del insieme di React ossequio alle versioni precedenti. Cio e governo con pezzo dovuto a un miglior packaging (utilizzando Rollup) e alla eliminazione del etichetta adesso inutilizzato.

    Aggiornando da React 15 a React 16, Tinder ha piccolo le dimensioni totali mediante gzip del loro quaderno del commerciante del

    La dimensione di React + React – Dom evo di

    50 KB con appiattimento gzip e attualmente e semplice di

    35 KB . Grazie a Dan Abramov , Dominic Gannaway e Nate Hunzaker cosicche sono stati determinanti nel concentrare le dimensioni del bundle di React 16.

    Casella di fatica a causa di la resilienza della insieme e la registrazione nella cache degli asset offline

    Tinder utilizza addirittura il plug -in Workbox Webpack durante registrare nella cache cosi la shell dell’applicazione in quanto le risorse statiche principali maniera i bundle principali, del commerciante, manifest e CSS. Cio consente la resilienza della organizzazione in le visite ripetute e garantisce cosicche l’applicazione si avvii oltre a celermente laddove un utente torna a causa di le visite successive.

    Comodita

    Scavando nei bundle di Tinder utilizzando source-map-explorer (un prossimo attrezzo di analisi dei bundle), ci sono ulteriori occasione durante concentrare le dimensioni del payload. Davanti di accedere, vengono recuperati componenti maniera immagine di Facebook, notifiche, messaggi e captcha. Allontanarli dal viaggio arduo potrebbe far conservare astuto al 20% sul insieme principale:

    Un’altra succursale nel percorso critico e uno script Facebook SDK da 200 KB. L’eliminazione di questo script (cosicche potrebbe abitare sistemato pigramente dal momento che fondamentale) potrebbe abbassare di 1 aiutante il epoca di carica preliminare.

    Conclusioni

    Tinder sta ancora iterando sulla sua Progressive Web App, ciononostante ha in precedenza adepto a vedere risultati positivi dai frutti del proprio faccenda. Dai un’occhiata a Tinder.com e resta sintonizzato per ulteriori progressi nel attiguo futuro!

    Grazie e congratulazioni a Roderick Hsiao, Jordan Banafsheha ed Erik Hellenbrand per il lancio di Tinder Online e il loro tributo an attuale scritto. Ringraziamento a Cheney Tsai verso la sua commento.

    Case study sulle prestazioni delle app Web progressive di Tinder

    Choose A Format
    Story
    Formatted Text with Embeds and Visuals
    Video
    Youtube, Vimeo or Vine Embeds
    Image
    Photo or GIF