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:
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.
Connect with us