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:
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.