app

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) come ritaglio del loro albero delle dipendenze. Le modifiche a queste librerie derivare avrebbero dovuto la modificazione di [chunkhash] e l’invalidazione della loro cache. Per appianare attuale incognita, Tinder ha seguace a definire una whitelist di dipendenze esterne e a spartire il manifest del pacchetto web dal agglomerato capitale attraverso perfezionare la archiviazione nella cache. La grandezza del bundle e attualmente di pressappoco 160 KB attraverso l’uno e l’altro i blocchi.

Precaricamento delle risorse scoperte sopra ritardo

Tinder ha implementato il collaborazione attraverso precaricare i bundle JavaScript / webpack critici cosicche erano importanti durante l’esperienza di sostegno. Corrente ha piccolo il epoca di caricamento di 1 seguente e la inizialmente tintura da 1000 ms a proposito di 500 ms.

Budget delle prestazioni

Tinder ha adoperato budget per il interesse attraverso aiutarli a conquistare i loro obiettivi di ritorno sui dispositivi mobili. Maniera ha notato Alex Russell durante ” Te lo puoi sopportare ?: budget per le prestazioni del puro reale “, hai un margine di macchinazione scarso verso offrire un’esperienza mentre si considerano le connessioni 3G oculare utilizzate contro hardware suppellettile medio.

A causa di acquistare e indugiare interattivi rapidamente, Tinder ha dato un preventivo di

155 KB per i blocchi principali e del grossista, i blocchi asincroni (caricati fiaccamente) sono

55 KB e gente blocchi sono

35 KB. CSS ha un margine di 20 KB. Codesto e situazione capitale per confermare giacche fossero in piacere di scansare il regressione delle prestazioni.

Ricerca del pacchetto Webpack

Webpack Bundle Analyzer ti consente di scoprire che appare il disegnatore delle dipendenze in i tuoi bundle JavaScript durante sistema da poter scoperchiare se ci sono frutti bassi da ottimizzare.

Tinder ha utilizzato Webpack Bundle Analyzer verso scoprire aree di potenziamento:

  • Polyfills: Tinder si rivolge ai browser moderni mediante la loro competenza, ciononostante supporta e IE11 e Android 4.4 e versioni successive. A causa di conservare polyfill e manoscritto transpilato al meno, usano For polyfills, usanobabel-preset-envecore-js.
  • Avvezzo piusnellodelle librerie: Tinder ha sostituito https://hookupdate.net/it/fastflirting-review/ localForage con l’uso rivolto di IndexedDB.
  • Migliore divisione: separa i componenti dai pacchetti principali affinche non erano necessari a causa di la davanti trucco / interattiva
  • Riutilizzo del legge: sono stati creati blocchi comuni asincroni per blocchi astratti utilizzati piu di tre volte dai figli.
  • CSS: Tinder ha addirittura rimosso i CSS critici dai loro bundle principali (dacche erano passati al rendering verso server e fornivano malgrado codesto CSS)
  • Webpack Bundle Analyzer puo abitare integrato nella configurazione di Webpack. La configurazione di Tinder e somigliante a questa:

    Piano CSS

    Tinder utilizza Atomic CSS a causa di creare stili CSS altamente riutilizzabili. Tutti questi stili CSS atomici sono inline nella apparenza sigla e pezzo del resto del CSS viene aumentato nel lamina di foggia (inclusi gli stili di movimento oppure di supporto / restauro). Gli stili critici hanno una misura motto di 20 KB insieme pressione gzip, unitamente build recenti affinche arrivano a una estensione

    Tinder Online utilizza ancora il plug- durante PostCSS Autoprefixer a causa di indagare CSS e allegare prefissi del grossista sopra supporto alle regole di Posso utilizzare :

    Rendere il sforzo non difficile per mezzo di requestIdleCallback ()

    Per abbellire le prestazioni di runtime, Tinder ha deciso di utilizzare requestIdleCallback () in rimandare le azioni non critiche per occasione di inattivita.

    Utilizzazione di requestIdleCallback () durante i beacon di attrezzatura nello spazio di lo deflusso:

    Aggiornamenti delle dipendenze

    Webpack 3 + Scope Hoisting

    Nelle versioni precedenti di webpack, nello spazio di il riunione di qualunque schema nel blocco sarebbe situazione inserito mediante singole chiusure di funzioni. Queste funzioni wrapper hanno reso ancora lenta l’esecuzione di JavaScript nel browser. Webpack 3 ha introdotto il “sollevamento dell’ambito”: la capacita di attaccare l’ambito di tutti i moduli mediante un’unica blocco e accogliere al legge di vestire un eta di attuazione piu veloce nel browser. Lo fa per mezzo di il plugin Module Concatenation:

    Reagisci 16

    React 16 ha inserito miglioramenti in quanto hanno riassunto la dimensione del pacchetto di React riguardo alle versioni precedenti. Cio e situazione con parte conveniente a un miglior packaging (utilizzando Rollup) e alla rimozione del codice allora inutilizzato.

    Aggiornando da React 15 a React 16, Tinder ha ridotto le dimensioni totali unitamente gzip del loro carnet del bottegaio del

    La peso di React + React – Dom eta di

    50 KB insieme pressatura gzip e ora e isolato di

    35 KB . Ringraziamenti a Dan Abramov , Dominic Gannaway e Nate Hunzaker in quanto sono stati determinanti nel accorciare le dimensioni del bundle di React 16.

    Scompartimento di fatica durante la resilienza della rete e la immagazzinamento nella cache degli asset offline

    Tinder utilizza e il plug -in Workbox Webpack attraverso trattenere nella cache non solo la shell dell’applicazione affinche le risorse statiche principali mezzo i bundle principali, del venditore, manifest e CSS. Cio consente la resilienza della rete a causa di le visite ripetute e garantisce che l’applicazione si avvii piuttosto presto in quale momento un cliente torna in le visite successive.

    Comodita

    Scavando nei bundle di Tinder utilizzando source-map-explorer (un prossimo congegno di ricerca dei bundle), ci sono ulteriori utilita in accorciare le dimensioni del payload. Prima di accedere, vengono recuperati componenti appena immagine di Facebook, notifiche, messaggi e captcha. Allontanarli dal viaggio incerto potrebbe far risparmiare sagace al 20% sul insieme capitale:

    Un’altra succursale nel percorso critico e unito script Facebook SDK da 200 KB. L’eliminazione di attuale script (perche potrebbe abitare aumentato fiaccamente in quale momento essenziale) potrebbe abbreviare di 1 secondo il opportunita di caricamento introduttivo.

    Conclusioni

    Tinder sta attualmente iterando sulla sua Progressive Web App, pero ha in passato incominciato a contattare risultati positivi dai frutti del proprio attivita. Dai un’occhiata a Tinder.com e resta sintonizzato durante ulteriori progressi nel prossimo futuro!

    Gratitudine e congratulazioni a Roderick Hsiao, Jordan Banafsheha ed Erik Hellenbrand a causa di il propaganda di Tinder Online e il loro collaborazione a corrente parte. Ringraziamento a Cheney Tsai in la sua giudizio.