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 brandello del loro pianta delle dipendenze. Le modifiche a queste librerie originariamente avrebbero causato la ritocco di [chunkhash] e l’invalidazione della loro cache. Verso risolvere codesto dilemma, Tinder ha iniziato an indicare una whitelist di dipendenze esterne e a suddividere il manifest del insieme web dal blocco primario verso progredire la registrazione nella cache. La estensione del bundle e dunque di quasi 160 KB verso l’uno e l’altro i blocchi.

Precaricamento delle risorse scoperte per ritardo

Tinder ha implementato il sostegno verso precaricare i bundle JavaScript / webpack critici giacche erano importanti verso l’esperienza di sostegno. Attuale ha piccolo il opportunita di carica di 1 secondo e la inizialmente tintura da 1000 ms an approssimativamente 500 ms.

Stanziamento delle prestazioni

Tinder ha usato bilancio a causa di il ritorno in aiutarli an ottenere i loro obiettivi di ritorno sui dispositivi mobili. Modo ha notato Alex Russell con ” Te lo puoi concedere ?: somma per le prestazioni del societa visibile “, hai un lato di movimento ristretto per proporre un’esperienza quando si considerano le connessioni 3G obbiettivo utilizzate su hardware mobilio medio.

In prendere e indugiare interattivi velocemente, Tinder ha comandato un bilancio di

155 KB a causa di i blocchi principali e del fornitore, i blocchi asincroni (caricati negligentemente) sono

55 KB e altri blocchi sono

35 KB. CSS ha un termine di 20 KB. Codesto e situazione primario verso proteggere che fossero per rango di scongiurare il indebolimento delle prestazioni.

Ricerca del pacchetto Webpack

Webpack Bundle Analyzer ti consente di svelare appena appare il diagramma delle dipendenze attraverso i tuoi bundle JavaScript mediante maniera da poter rivelare se ci sono frutti bassi da razionalizzare.

Tinder ha consumato Webpack Bundle Analyzer verso mostrare aree di avanzamento:

  • Polyfills: Tinder si rivolge ai browser moderni insieme la loro competenza, ma supporta di nuovo IE11 e Android 4.4 e versioni successive. Durante tenere polyfill e cifrario transpilato al piccolissimo, usano For polyfills, usanobabel-preset-envecore-js.
  • Abituato piusnellodelle librerie: Tinder ha sostituito localForage per mezzo di l’uso destinato di IndexedDB.
  • Migliore ripartizione: separa i componenti dai pacchetti principali che non erano necessari per la inizialmente descrizione / interattiva
  • Riutilizzo del codice: sono stati creati blocchi comuni asincroni con blocchi astratti utilizzati piu di tre volte dai figli.
  • CSS: Tinder ha ed rimosso i CSS critici dai loro bundle principali (perche erano passati al rendering parte server e fornivano comunque corrente CSS)
  • Webpack Bundle Analyzer puo abitare integrato nella aspetto di Webpack. La figura di Tinder e paragonabile a questa:

    Piano CSS

    Tinder utilizza Atomic CSS in produrre stili CSS altamente riutilizzabili. Tutti questi stili CSS atomici sono inline nella inaugurazione sigla e brandello del rudere del CSS viene caricato nel carta di modo (inclusi gli stili di eccitazione ovverosia di base / restauro). Gli stili critici hanno una dimensione prassi di 20 KB mediante pressione gzip, unitamente build recenti in quanto arrivano a una rilievo

    Tinder Online utilizza e il plug- durante PostCSS Autoprefixer per considerare CSS e collegare prefissi del grossista con supporto alle regole di Posso utilizzare :

    Prorogare il lavoro non incerto mediante requestIdleCallback ()

    A causa di ottimizzare le prestazioni di runtime, Tinder ha preferito di utilizzare requestIdleCallback () attraverso rimandare le azioni non critiche con eta di inattivita.

    Impiego di requestIdleCallback () durante i beacon di apparecchiatura nello spazio di lo scorrimento:

    Aggiornamenti delle dipendenze

    Webpack 3 + Scope Hoisting

    Nelle versioni precedenti di webpack, all’epoca di il raggruppamento di qualunque modello nel insieme sarebbe governo inserito con singole chiusure di funzioni. Queste funzioni wrapper hanno reso con l’aggiunta di lenta l’esecuzione di JavaScript nel browser. Webpack 3 ha incluso il “rivolta dell’ambito”: la idoneita di congiungere l’ambito di tutti i moduli in un’unica barriera e concedere al combinazione di occupare un occasione di compimento piuttosto rapido nel browser. Lo fa insieme il plugin Module Concatenation:

    Reagisci 16

    React 16 ha esperto miglioramenti affinche hanno adunanza la estensione del pacchetto di React ossequio alle versioni precedenti. Cio e governo con parte adeguato a un miglior packaging (utilizzando Rollup) e alla destituzione del manoscritto attualmente inutilizzato.

    Aggiornando da React 15 a React 16, Tinder ha riunione le dimensioni totali unitamente gzip del loro blocco del agente del

    La grandezza di React + React – Dom periodo di

    50 KB insieme schiacciamento gzip e ora e solitario di

    35 KB . Gratitudine a Dan Abramov , Dominic Gannaway e Nate Hunzaker perche sono stati determinanti nel abbreviare le dimensioni del bundle di React 16.

    Scompartimento di prodotto durante la resilienza della agguato e la archiviazione nella cache degli asset offline

    Tinder utilizza ancora il plug -in Workbox Webpack per ricordare nella cache come la shell dell’applicazione in quanto le risorse statiche principali maniera i bundle principali, del piazzista, manifest e CSS. Cio consente la resilienza della insieme verso le visite ripetute e garantisce che l’applicazione si avvii piu velocemente quando un cliente torna in le visite successive.

    Occasione

    Scavando nei bundle di Tinder utilizzando source-map-explorer (un aggiunto attrezzo di indagine dei bundle), ci sono ulteriori comodita per accorciare le dimensioni del payload. Anzi di accedere, vengono recuperati componenti come scatto di Facebook, notifiche, messaggi e captcha. Allontanarli dal prassi pericoloso potrebbe far rispettare astuto al 20% sul involto principale:

    Un’altra succursale nel prassi critico e uno script Facebook SDK da 200 KB. L’eliminazione di corrente script (cosicche potrebbe capitare posto svogliatamente dal momento che chiaro) potrebbe diminuire di 1 seguente il occasione di caricamento introduttivo.

    Conclusioni

    Tinder sta ora iterando sulla sua Progressive Web App, ciononostante ha gia esperto a contattare risultati positivi dai frutti del conveniente attivita. Dai un’occhiata a Tinder.com e resta sintonizzato in ulteriori progressi nel altri futuro!

    Gratitudine e congratulazioni a Roderick Hsiao, Jordan Banafsheha ed Erik Hellenbrand durante il tiro di Tinder Online e il loro aiuto a questo oggetto. Ringraziamento a Cheney Tsai in la sua esame critico.

    Molimac © 2021
    Todos los Derechos Reservados