Uno degli aspetti più cruciali delle prestazioni di un sito Web è la quantità di larghezza di banda assegnata al suo utilizzo. La larghezza di banda determina la velocità con cui il server Web è in grado di caricare le informazioni richieste. Sebbene ci siano altri fattori da considerare per quanto riguarda le prestazioni di un sito Web, la larghezza di banda è spesso il fattore limitante.
Definizione della larghezza di banda
La larghezza di banda è definita in termini di numero di bit al secondo. Un bit è la più piccola quantità di informazioni del computer, uno zero o uno, e otto di loro formano un singolo byte. Storicamente, le connessioni di rete sono misurate in bit, mentre i dispositivi degli utenti finali come la memoria del computer e i dischi rigidi sono misurati in byte. Un megabit è poco più di un milione di bit (più precisamente 1.048.576 bit), mentre un gigabit è più di un miliardo di bit (precisamente 1.073.741.824 bit). Pertanto, una connessione a 100 megabit al secondo può inviare oltre 104 milioni di bit al secondo, che è più utilmente formulato come 13 MB al secondo.
Calcolo dei requisiti di larghezza di banda
La maggior parte dei server Web invia pagine statiche e immagini su richiesta ai browser Web, il che significa che non è necessaria alcuna modifica a questi file prima che vengano caricati su Internet. In questi casi, i requisiti di larghezza di banda sono abbastanza semplici. Somma il numero totale di byte utilizzati dalle risorse che compongono una determinata pagina del tuo sito: una pagina HTML è un certo numero di kilobyte di HTML, JavaScript e file inclusi, mentre le immagini richieste dalla pagina saranno probabilmente un numero maggiore di kilobyte. Ad esempio, una home page può contenere 25 KB di HTML, fogli di stile a cascata e JavaScript, che quindi richiede 250 KB di immagini. Pertanto, richiedendo questa pagina per la prima volta avresti bisogno di 275 KB di dati, o 2.200 kilobit. Con una connessione Internet da 100 megabit, utilizzeresti poco più di un quarto di megabit per un secondo, il che equivale a circa 300 utenti simultanei in grado di accedere al sito senza rallentamenti. Una certa quantità di larghezza di banda viene sempre persa a causa dei requisiti di rete generali, quindi arrotondare per difetto queste stime (in questo caso, da 364 a 300) è una buona idea. I siti Web che si aspettano più di 300 utenti simultanei, quindi, avrebbero bisogno di più larghezza di banda Internet o utilizzerebbero file più piccoli nelle loro home page.
Collo di bottiglia della CPU CPU
Un sito web può anche essere rallentato dalla necessità di servire file dinamici. Questo è il caso ogni volta che viene generata una pagina Web basata su codice di programmazione; ad esempio, le pagine di un sito WordPress non sono HTML statico ma sono generate su richiesta dalla programmazione PHP nel template WordPress. Un sito dinamico con gli stessi parametri dell'esempio di pagina statica sarebbe in grado di gestire solo 300 utenti simultanei se i requisiti della CPU per generare ogni pagina sono circa meno di un terzo dell'1% della CPU. D'altra parte, se viene utilizzato l'1% della CPU per generare una pagina, il numero massimo di utenti simultanei sarà più vicino a 100 che a 300, anche se la larghezza di banda disponibile può gestire più utenti.
Reti di memorizzazione nella cache e distribuzione di contenuti
I colli di bottiglia della larghezza di banda possono essere migliorati utilizzando reti di distribuzione dei contenuti, o CDN, che archiviano copie dei dati del server Web, di solito in più punti su Internet. Ad esempio, un CDN potrebbe trovarsi a Tokyo e Londra, duplicando o memorizzando nella cache le informazioni dal server Web per gli utenti rispettivamente in Asia e in Europa. Il CDN è fisicamente più vicino all'utente, accelerando la consegna e riducendo il numero di accessi sul server Web principale. Allo stesso modo, la memorizzazione nella cache sul server Web locale o sui CDN può anche ridurre notevolmente i requisiti della CPU, ma al costo di inviare pagine leggermente obsolete ai browser Web.