Skip to content

marbio/Front-End-Performance-Checklist

ย 
ย 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation


Front-End Performance Checklist

ย  Front-End Performance Checklist ย 

๐ŸŽฎ L'unica Checklist delle Performance Front-End che funziona piรน velocemente delle altre.

Una semplice regola: "Progetta e sviluppa con le performance in mente"

ย  ย ย ย  PRs Welcome ย  ย  ย ย ย  Discord ย  ย  ย  ย ย ย  Licence MIT ย 

ย  Come usarla โ€ข Contribuisci โ€ข Product Hunt

๐Ÿ‡จ๐Ÿ‡ณ ๐Ÿ‡ซ๐Ÿ‡ท ๐Ÿ‡ฐ๐Ÿ‡ท ๐Ÿ‡ต๐Ÿ‡น ๐Ÿ‡ท๐Ÿ‡บ ๐Ÿ‡ฏ๐Ÿ‡ต ๐Ÿ‡ฎ๐Ÿ‡ท ๐Ÿ‡ฎ๐Ÿ‡น

Altre Checklists:
๐Ÿ—‚ Front-End Checklist โ€ข ๐Ÿ’Ž Front-End Design Checklist

Introduzione

Il tematica delle performance รจ molto ampia, ma non รจ sempre un aspetto da considerare a livello "back-end" oppure "admin": infatti รจ anche una responsabilitร  a livello Front-end. La Checklist delle Performance Front-end rappresenta una lista esaustiva di elementi che dovresti seguire o per lo meno esserne consapevole, come sviluppatore Front-End e applicare ai tuoi progetti (personali e lavorativi).

Come usarla?

Per ogni regola, troverai un paragrafo che spiega perchรจ questa regola รจ importante e come puoi sistemarla. Per informazioni piรน approfondite, dovresti trovare link che puntano a ๐Ÿ›  strumenti, ๐Ÿ“– articoli o ๐Ÿ“น contenuti multimediali che possono completare la checklist.

Tutti gli elementi contenuti nella Checklist delle Performance Front-End sono essenziali per raggiungere livelli di performance piรน alti, ma troverai anche un indicatore che ti aiuterร  a dare prioritร  ad alcune regole rispetto ad altre. Ci sono 3 livelli di prioritร :

  • Low livello di prioritร  basso.
  • Medium livello di prioritร  medio. Non dovresti evitare di affronare quell'elemento.
  • High livello di prioritร  alto. Non puoi evitare di seguire quella regola e dovresti implementare le correzioni segnalate.

Strumenti di Performance

Lista degli strumenti che puoi utilizzare per testare o monitorare il tuo sito web o la tua applicazione:

Riferimenti


HTML

html

  • HTML Minificato: medium Il codice HTML viene minimizzato, i commenti, gli spazi bianchi e le nuove righe vengono eliminati dai file di produzione.

    Perchรจ:

    La rimozione di tutti gli spazi, i commenti e gli attributi non necessari ridurra le dimensioni del tuo documento HTML e velocizzerร  il tempo di caricamento del tuo sito web ed ovviamente ciรฒ allegerirร  il download per gli utenti finali.

    Come:

    La maggior parte dei framework dispone di plugin per facilitare la minificazione delle pagine web. Puoi utilizzare diversi moduli NPM che faranno automaticamente il lavoro al tuo posto.

  • Posiziona i tag CSS sempre prima di quelli Javascript: high Assicurati che il tuo CSS venga sempre caricato prima del codice Javascript.

    <!-- Non raccomandato -->
    <script src="jquery.js"></script>
    <script src="foo.js"></script>
    <link rel="stylesheet" href="foo.css"/>
    
    <!-- Raccomandato -->
    <link rel="stylesheet" href="foo.css"/>
    <script src="jquery.js"></script>
    <script src="foo.js"></script>

    Perchรจ?:

    Avere i tag CSS prima di qualsiasi tag Javascript consente un download parallelo migliore e questo accellera i tempi di rendering del browser.

    Come?:

    โƒ Assicurati che <link> e <style> nell' <head> vengono sempre prima di <script>.

  • Minimizza il numero degli iframe: high Usa gli iframe solo se non hai altre possibilitร  tecniche. Use iframes only if you don't have any other technical possibility. Cerca di evitarli il piรน possibile.

  • Ottimizzazione del pre-load con prefetch, dns-prefetch e prerender: low I browser piรน popolari possono utilizzare direttive sui tag <link> e attributi "rel" con alcune keyword particolari per pre-caricare URL specifici.

    Perchรจ?:

    Il prefetching permette ai browser di prendere in maniera silenziosa le risorse necessarie per mostrare i contenuti che un utente potrebbe accedere nel futuro prossimo. I browser sono capaci di conservare queste risorse in cache e quindi velocizzare il caricamento delle pagine web quando utilizzano domini differenti per le risorse delle pagine. Quando una pagina web รจ stata caricata e il tempo di inattivitร  รจ trascorso, il browser inizia a scaricare altre risorse. Quando un utente entra in un particolare link (giร  precaricato), il contenuto verrร  servito istantaneamente.

    Come?:

    โƒ Assicurati che tutti i <link> siano nella sezione <head>.

โฌ† torna sรน

CSS

css

  • Minificazione: high Tutti i file CSS vengono minificati, i commenti, gli spazi bianchie le nuove linee vengono rimosse dai file di produzione.

    Perchรจ?:

    Quando i file CSS vengono minificati, il contenuto viene caricato piรน velocemente e vengono inviati meno dati al client. Minificare i file CSS in ambiente di produzione รจ molto importante. รˆ vantaggioso sia per l'utente ma anche per ridurre i costi dovuti alla larghezza della banda e all'utilizzo delle risorse.

    Come:

    โƒ Utilizzare strumenti che permettono di minificare automaticamente i file CSS in fase di build oppure in fase di deploy.

  • Concatenazione: medium questa pratica consiste nell'unire diversi file CSS in un singolo file (Non sempre valido se si utilizza il protocollo HTTP/2).

    <!-- Non raccomandato -->
    <link rel="stylesheet" href="foo.css"/>
    <link rel="stylesheet" href="bar.css"/>
    
    <!-- Raccomandato -->
    <link rel="stylesheet" href="foobar.css"/>

    Perchรจ?:

    Se stai ancora utilizzando la versione HTTP/1, dovresti ancora continuare a concatenare i file CSS, mentre se usi HTTP/2 non dovresti aver piรน bisogno di unirli (per sicurezza conviene fare dei test).

    Come:

    โƒ Utilizza strumenti online o qualsiasi plugin prima o durante la build o il deploy dei tuoi file per effettuare la concatenzaione.
    โƒ Assicurati, ovviamente, che la concatenazione non spacchi il front-end del tuo progetto.

  • Non bloccante: high I file CSS devono essere non bloccanti per evitare che il caricamento del DOM di pagina richieda piรน tempo.

    <link rel="preload" href="global.min.css" as="style" onload="this.rel='stylesheet'">
    <noscript><link rel="stylesheet" href="global.min.css"></noscript>

    Perchรจ?:

    I file CSS possono bloccare il caricamento di pagina e ritardare il rendering. Utilizzando preload si puรฒ caricare un file css prima che il browser inizi a mostrare il contenuto di una pagina.

    Come?:

    โƒ Bisogna aggiungere l'attributo rel attribute con il valore preload e aggiungere as="style" sull'elemento <link>.

  • CSS inutilizzato: medium Rimozione dei selettori css non utilizzati.

    Perchรจ?:

    La rimozione dei selettori CSS non utilizzati puรฒ ridurre la dimensione dei file e quindi velocizzare il caricamento delle risorse.

    Come:

    โƒ โš ๏ธ Controlla sempre se il framework CSS che vuoi utilizzare non abbia giร  incluso codice per fare il reset o la normalizzazione CSS. Alcune volte puรฒ capiare che non ti serva tutto che รจ contenuto all'interno dei file di reset o normalizzazione.

  • CSS incorporato o in linea: high Evita di utilizzare CSS incorporati o in linea all'interno del tag <body> (Non valido se si utilizza HTTP/2)

    Perchรจ?:

    Una delle prime ragioni รจ perchรจ รจ buona pratica separare il contenuto dal design. Questo aiuta anche ad avere una codebase piรน mantenibile e rende il tuo sito web accessibile. Ma per quanto riguarda le performance dipende semplicemente dal fatto che riduce la dimensione delle pagine HTML e riduce i tempi di caricamento.

    Come:

    Utilizza sempre fogli di stile esterni oppure incorpora il CSS all'interno del tag <head> (e segui le altre regole di performance lato CSS).

  • Analizza la complessitร  dei file CSS: high Analizzare i tuoi fogli di stile puรฒ aiutarti ad identificare problematiche, ridondanze e selettori CSS duplicati.

    Perchรจ?:

    Qualche volta potresti avere ridondanze o errori di validazione nei tuoi file CSS, analizzandoli e riducendo queste complessitร  puรฒ aiutarti a velocizzarli (perchรจ il tuo browser riuscirร  a caricarli piรน velocemente).

    Come:

    Il tuo CSS dovrebbe essere organizzato, magari utilizzando un preprocessore CSS. Alcuni degli strumenti online riportati sotto possono anche aiutarti ad analizzare e correggere il tuo codice.

โฌ† torna su

Fonts

fonts

  • Prevenire il flash o il testo invisibile: medium Evita il testo trasparente finchรฉ il Webfont non viene caricato

โฌ† torna sรน

Immagini

images

  • Utilizza immagini vettoriali rispetto a quelle rasterizzate o bitmap: medium Preferisci l'utilizzo di immagini vettoriali rispetto alle immagini bitmap (quando possibile).

    Perchรจ:

    Le immagini vettoriali (SVG) tendono ad essere piรน piccole rispetto alle immagini e gli SVG inoltre sono responsive e scalano perfettamente. Queste immagini possono essere animato e modificate via CSS.

โฌ† torna sรน

JavaScript

javascript

  • Minificazione Javascript: high Tutti i file JavaScript sono minimizzati, i commenti, gli spazi bianchi e le nuove righe vengono rimossi dai file di produzione (ancora valido se si utilizza HTTP/2).

    Perchรจ?:

    La rimozione di tutti gli spazi, i commenti e le interruzioni non necessari ridurrร  le dimensioni dei tuoi file JavaScript e accelererร  i tempi di caricamento della pagina del tuo sito e ovviamente alleggerirร  il download per il tuo utente.

    Come?:

    โƒ Usa gli strumenti suggeriti di seguito per minimizzare automaticamente i tuoi file prima o durante la compilazione o la distribuzione.

  • Nessun JavaScript nel mezzo della pagina: medium (Valido solo per i siti Web) Evita di avere piรน codici JavaScript incorporati nel mezzo del tuo corpo. Raggruppa il tuo codice JavaScript all'interno di file esterni o eventualmente in <head> o alla fine della tua pagina (prima di </body>).

    Perchรจ?:

    L'inserimento di codice JavaScript incorporato direttamente nel tuo <body> puรฒ rallentare la tua pagina perchรฉ si carica mentre il DOM viene costruito. L'opzione migliore รจ utilizzare file esterni con async o defer per evitare di bloccare il DOM. Un'altra opzione รจ inserire alcuni script all'interno del tuo <head>. Il piรน delle volte codice di analisi o piccolo script che deve essere caricato prima che il DOM arrivi all'elaborazione principale.

    Come?:

    Assicurati che tutti i tuoi file siano caricati usando async o defer e decidi saggiamente il codice che dovrai inserire nel tuo <head>.

  • Javascript non bloccante: high I file JavaScript vengono caricati in modo asincrono utilizzando "async" o differiti utilizzando l'attributo "defer".

    <!-- Defer Attribute -->
    <script defer src="foo.js"></script>
    
    <!-- Async Attribute -->
    <script async src="foo.js"></script>

    Perchรจ?:

    JavaScript blocca la normale analisi del documento HTML, quindi quando il parser raggiunge un tag <script> (in particolare si trova all'interno di <head>), si ferma per recuperarlo ed eseguirlo. L'aggiunta di async o defer รจ altamente raccomandata se i tuoi script sono posizionati nella parte superiore della pagina, ma รจ meno utile se appena prima del tag </body>. Tuttavia, รจ consigliabile utilizzare sempre questi attributi per evitare qualsiasi problema di prestazioni.

    Come?:

    โƒ Aggiungi async (se lo script non si basa su altri script) o defer (se lo script si basa o si basa su uno script asincrono) come attributo al tag dello script.
    โƒ Se disponi di script di piccole dimensioni, potresti utilizzare lo script inline posto sopra gli script asincroni.

  • Librerie JS ottimizzate e aggiornate: medium Tutte le librerie JavaScript utilizzate nel tuo progetto sono necessarie (preferisci Vanilla JavaScript per funzionalitร  semplici), aggiornate alla loro ultima versione e non sovraccaricano il tuo JavaScript con metodi non necessari.

    Perchรจ?:

    La maggior parte delle volte, le nuove versioni vengono fornite con l'ottimizzazione e la correzione della sicurezza. Dovresti utilizzare il codice piรน ottimizzato per velocizzare il tuo progetto e assicurarti di non rallentare il tuo sito Web o la tua app senza un plug-in obsoleto.

    Come?:

    Se il tuo progetto usa i pacchetti NPM, npm-check รจ una libreria piuttosto interessante per aggiornare / aggiornare le tue librerie. Greenkeeper puรฒ cercare automaticamente le tue dipendenze e suggerire un aggiornamento ogni volta che esce una nuova versione.

โฌ† torna sรน

Server

server-side

  • Il tuo sito utilizza HTTPS: high

    Perchรจ?:

    HTTPS non รจ solo per i siti Web di e-commerce, ma per tutti i siti Web che scambiano dati. Dati condivisi da un utente o dati condivisi con un'entitร  esterna. I browser moderni oggi limitano le funzionalitร  per i siti che non sono sicuri. Ad esempio: la geolocalizzazione, le notifiche push e i service worker non funzionano se l'istanza non utilizza HTTPS. E oggi รจ molto piรน facile configurare un progetto con un certificato SSL rispetto a prima (e gratuitamente, grazie aLet's Encrypt).

  • Minimizzare le richieste HTTP: high Assicurati sempre che ogni file richiesto sia essenziale per il tuo sito web o applicazione.
  • Usa una CDN per servire le tue risorse: medium Usa un CDN per distribuire piรน velocemente i tuoi contenuti in tutto il mondo.
  • Servire i file con lo stesso protocollo: high Evita che il tuo sito Web serva file provenienti dalla fonte utilizzando HTTP sul tuo sito Web che utilizza HTTPS, ad esempio. Se il tuo sito Web utilizza HTTPS, i file esterni dovrebbero provenire dallo stesso protocollo.

  • Servire file raggiunbili: high Evita di richiedere file non raggiungibili (404).

  • Imposta correttamente le intestazioni della cache HTTP: high Imposta le intestazioni HTTP per evitare un numero costoso di roundtrip tra il tuo browser e il server.
  • Compressione GZIP / Brotli abilitata: high Usa un metodo di compressione come Gzip o Brotli per ridurre le dimensioni dei tuoi file JavaScript. Con un file di dimensioni inferiori, gli utenti saranno in grado di scaricare l'asset piรน velocemente, con conseguente miglioramento delle prestazioni.

โฌ† torna sรน


Performances Freamework Javascript

Angular

React

Vue

Performance e CMS

WordPress

Articoli

Plugin consigliati


Traduzioni

La Front-End Performance Checklist vuole essere disponibile anche in altre lingue! Non esitare a inviare il tuo contributo!

Contribuire

Apri una issue o una pull request per suggerire modifiche o aggiunte.

Supporto

Se hai domande o suggerimenti, non esitare a usare Discord o Twitter:

Autore

**Costruita con โค๏ธ da David Dias

Contributori

Questo progetto esiste grazie a tutte le persone che contribuiscono. [Contribute].

Sostenitori

Grazie a tutti i nostri sostenitori! ๐Ÿ™ [Diventa un sostenitore]

Sponsor

Sostieni questo progetto diventando uno sponsor. Il tuo logo apparirร  qui con un link al tuo sito web. [Diventa sponsor]

Licenza

MIT

Tutte le icone sono fornite da Icons8

โฌ† Torna sรน

About

๐ŸŽฎ L'unica Checklist delle Performance Front-End che funziona piรน velocemente delle altre

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published