Traduzione autorizzata da Sucuri che detiene il copyright dell’articolo. Leggi l’articolo originale (in Inglese)
Daniel B. Cid è fondatore del progetto open source OSSEC HIDS e fondatore/CTO di Sucuri.
Dal lancio dello strumento di test di performance di un sito web, Sucuri ha ricevuto un sacco di domande su come migliorare la velocità e le prestazioni di siti web realizzati con WordPress. Molti proprietari di siti web non sono consapevoli di quanto lenti siano i loro siti, quindi cerchiamo di far luce sulla questione.
Ci sono un certo numero di risorse disponibili per aiutare a tuffarsi nel mondo dell’ottimizzazione delle prestazioni. In questo articolo, Daniel Cid vuole creare una base adeguata per chiunque per iniziare a pensare all’ottimizzazione delle prestazioni.
Questa guida di base dovrebbe aiutare a capire come pensare alle prestazioni e su quali aree concentrarsi. Questa informazione è stata progettata come una panoramica, ma è strutturata in modo che, se foste interessati a più dati, è possibile seguire i link forniti per ulteriori ricerche, dettagli, e tutorial on-line che consentono di ottimizzare il vostro sito web in ogni strato.
Chiedimi maggiori informazioni sulla sicurezza online!
Contattaci
chiama 339 848 3250
Prestazioni – Aree Principali
In primo luogo, dobbiamo capire che le prestazioni di un sito web può essere diviso in tre aree. Ognuna di queste aree influenza la velocità del sito web in modi diversi.
I principi di base delle prestazioni per ogni dominio possono essere delineati come segue:
- Software: fare meno cose
- Networking: ridurre le distanze
- Hardware: Leggere e scrivere più velocemente
Sicuramente questa è una semplificazione drastica, ma cattura l’essenza di come l’ottimizzazione dovrebbe essere affrontata in ogni rispettivo campo.
Software: può essere la più semplice da capire.
Quando si tratta di programmazione, l’ottimizzazione tenta di far funzionare il codice compilato il più veloce possibile, facendo meno cose. Meno logica. Meno codice da elaborare. Più ottimizzato è un pezzo di codice, minore è numero di istruzioni che ci vogliono per completare un determinato compito. Come risultato, il software funzionerà più velocemente. Il segreto per rendere una applicazione veloce è quello di non fargli fare praticamente nulla.
Networking: La rete è molto diversa.
Piuttosto che fare meno, la questione è di ridurre il tempo necessario per trasferire byte di informazioni dal punto A al punto B. Di nuovo, questa è una semplificazione perché la distanza più breve non è sempre la più veloce, ma quello che si può fare per ottimizzare il networking è di ridurre le distanze per tagliare il tempo complessivo di trasferimento.
L’hardware è diverso sia dal software che dal networking
L’obiettivo è qui leggere e scrivere più velocemente i dispositivi fisici – specialmente dischi e schede. Questo è un settore che la maggior parte dei webmaster non ha la possibilità di personalizzare (fuori del loro server host), siccome la maggior parte dell’hardware è nel cloud. Parleremo di questo anche alla fine della discussione.
Testare la performance
Durante il test, bisogna ricordare che non tutte le cose sono uguali. Ci sono molte opzioni e un sacco di risultati.
A Sucuri hanno due strumenti che usano regolarmente quando lavorano con i loro clienti.
Sucuri globale Performance Test: Questo strumento ci aiuta a vedere quanto velocemente una pagina sta caricando in tutto il mondo. E’ orientata al al tempo di collegamento (la velocità viene restituito il primo byte) e il tempo totale per ogni posizione. Questo è importante perché ci aiuta a valutare come il resto del mondo sta vedendo un sito web.
Speed Test Pingdom: Questo strumento ci aiuta a vedere le prestazioni di ogni carico di asset sul sito. Le attività potrebbero includere l’integrazione di API, immagini, etc. Queste informazioni dettagliate ci aiutano ad entrare nel dettaglio di ogni pagina, e ci permette di vedere come il codice si sta caricando e cosa potrebbe contribuire a problemi di prestazioni.
Questi non sono strumenti perfetti, ma usando entrambi insieme ci dà una buona vista delle prestazioni correnti per un determinato sito.
Ottimizzare WordPress
Voglio concentrarmi su WordPress dato che è la piattaforma CMS più diffusa sul mercato.
WordPress è un software open-source che gira su PHP, che si estende sulla parte superiore del software del server Web (ad esempio, Apache, Nginx, ecc). Ricordiamo come ottimizzare il software? Dobbiamo fargli fare meno cose.
Per quanto mi riguarda, io divido le prestazioni di WordPress in 6 aree che prendo sempre in considerazione quando si parla di ottimizzazione delle prestazioni di WordPress:
1. Caching.
Il cambiamento più incisivo si può fare sulle prestazioni sito è quello di consentire una qualche forma di caching.
Quando un visitatore o “richiesta” arriva al server, WordPress esegue una serie di azioni per caricare codice, risorse, plugin, temi, media e dei contenuti. Ogni azione presenta una certa latenza al processo. Moltiplica questo per centinaia di richieste e ci si trova subito in difficoltà per quanto riguarda le prestazioni.
La memorizzazione nella cache consente al sito web di salvare le istanze di queste azioni in un file che può essere facilmente accessibile ed utilizzabile in seguito alla richiesta successiva. Questo riduce tutto il lavoro che WordPress deve fare su ogni richiesta. Se il sito dispone di 100 richieste di funzionalità alla stessa pagina, perché ogni richiesta dovrebbe avviare una serie di azioni? Il caching fa in modo che, dopo la prima richiesta, le restanti 99 richieste ottengano una risposta molto più velocemente da parte del contenuto già nella cache.
I vantaggi di caching sono esponenziali. Non solo questo risparmiare risorse locali sul server web (che permette di svolgere meglio) ma migliora anche l’esperienza utente, in quanto non c’è bisogno di aspettare.
La memorizzazione nella cache può essere realizzata a livello di applicazione utilizzando un plugin come WP Super-Cache o nel cloud tramite una rete di distribuzione di contenuti (CDN) – come con la Sucuri Firewall. Non c’è niente di sbagliato nell’utilizzo in combinazione tra loro. Nella maggior parte dei casi, i CDN sono preferibili perché esse permettono proprietari di siti web un controllo più granulare sul tipo di caching disponibile. Ad esempio, attraverso il Sucuri Firewall permettiamo il caching delle pagine di default per WordPress senza rompere la pagina wp-admin, commenti e altri elementi dinamici di WordPress.
2. Meno Add-Ons.
Eseguite solo i plugin di cui si ha realmente bisogno. Rimuovere qualsiasi plugin inutilizzato, test, debug o plug-in piuttosto che lasciarli installati e disabilitati. Ricordate, quando WordPress si carica analizzerà la lista di plugin e temi. Meno cose da caricare, più veloce sarà il tuo sito. Questo non è solo per le prestazioni, ma anche per la sicurezza. Meno codice significa meno potenziali vulnerabilità.
3. Meno script.
Viviamo nell’era del tracciamento pixel (es. gli script). Quasi ogni nuova soluzione di marketing ha un nuovo pixel e queste integrazioni ci aiutano a capire meglio come viene visitato il sito. Tuttavia, ogni nuovo tracciatiore influisce negativamente sulle prestazioni del sito.
Se si utilizza lo strumento Pingdomdi cui abbiamo accennato in precedenza, è possibile vedere esattamente come ogni pixel di tracciamento influisce sulla prestazione complessiva. La ragione principale di ciò è che si aggiunge più pezzi per il browser per caricare, comprese le nuove richieste DNS, le richieste HTTP e altro codice da analizzare per il browser.
4. Intestazioni di cache.
Questo punto va di pari passo con il caching delle risorse, ma questo merita una propria spiegazione. Se si impostano le intestazioni di cache appropriate sul tuo sito (Expire, Etag, e Cache-Control) ciò ridurrà al minimo il numero di richieste al tuo sito e gli utenti potranno semplicemente ri-utilizzare il contenuto archiviato nella cache del loro browser locale.
Maggior parte dei browser comuni (vale a dire, Chrome, Firefox) hanno a disposizione una implementazione di cache di HTTP. Ciò significa che se un server risponde con le giuste direttive intestazione HTTP, il browser locale riconoscerà e memorizzare i risultati. Questo significa che quando l’utente sta navigando nel sito, staranno vedendo la cache che è stato già memorizzata localmente invece che fare più richieste per l’applicazione (e web server).
Questo può essere fatto con il plugin W3TC caching (in Prestazioni> cache del browser). Se si dispone di accesso al server, è anche possibile farlo tramite il file .htaccess. Per coloro che utilizzano Nginx, si può fare con:
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 10d;
}
Questo frammento di codice dice al browser locale di cache risorse statiche per 10 giorni.
5. Compressione.
La compressione aiuta nelle aree di rete e hardware. Una pagina compressa (più piccola) sarà letta più velocemente da i dischi e trasferita al browser. I file compressi consentono al web server di rispondere con un file molto più piccolo, che raggiunge la destinazione molto più veloce, che prevede una migliore esperienza per l’utente. La forma più comune di compressione oggi è Gzip.
Ci sono una serie di opzioni di configurazione e per la compressione del server, in modo da guardare per l’istanza specifica e distribuire conseguenza. Se si utilizza nginx aggiungere quanto segue al nginx.conf:
gzip on;
gzip_disable “msie6”;
gzip_types text/plain text/css application/x-javascript text/javascript application/javascript;
Non è consigliabile comprimere le immagini (con gzip) in quanto sono generalmente già compresse e il guadagno è marginale. Ne parleremo fra poco.
6. Ottimizzare le immagini.
Lavorare con le immagini può essere duro, ma è importante prestare particolare attenzione alle immagini in uso sul sito. Un’immagine che è 10MBs caricherà molto più lentamente di quello che è stato compresso a 100KBs.
La compressione per ottimizzare immagini per il web è un argomento completo, quindi vi invitiamo a dedicare qualche tempo alla ricerca. C’è un grande articolo di Google sulle loro raccomandazioni per ottimizzare immagine per il web, tra cui le immagini vettoriali e raster, e quando utilizzare ciascuna. Si parla anche di utilizzare web font al posto dei testi codificati, utilizzando effetti CSS3, ove possibile.L’obiettivo è di mantenere la qualità dell’immagine, riducendo le dimensioni complessive.
In WordPress, si potrebbe desiderare di guardare il plugin Imsanity che aiuta a ridimensionare le immagini di grandi dimensioni in upload. Un’altra opzione interessante per i siti web con immagini pesanti è una CDN specifica come Photon.
Ottimizzazione del server Web
Una volta che WordPress è configurato correttamente, possiamo anche prendere in considerazione l’ottimizzazione Apache (il software più comune utilizzato per i server web). Siamo in grado di ottimizzare le prestazioni di WordPress, concentrandosi anche qui. Purtroppo, se siete su un server condiviso o gestito non sarà in grado di fare queste cose da soli (si spera il vostro host lo abbia già fatto).
Apache è molto semplice da configurare, ma un paio di modifiche sono in grado di ottimizzare al meglio le prestazioni.
1. Attivare Keep Alive.
Ogni volta che si visita un sito, il browser inizia il networking handshake (3 vie) con il server web. Se si visita una pagina e contiene immagini dieci, è necessario completare il 3-way handshake 11 volte.
Tuttavia, se si attiva Keep Alive, il browser farà solo la stretta di mano una volta e riutilizzare la stessa sessione di scaricare tutti i file altrui. Come detto sopra: meno cose = software più veloce. L’attivazione del keep alive riduce inoltre significativamente il numero di pacchetti di rete trasferiti.
Per fare questo aprire il httpd.conf e aggiungere:
KeepAlive only
2. Disattivare DNS Lookups.
Questa direttiva aggiunge la latenza per ogni singola richiesta fatta al server web perché costringe una ricerca DNS prima che la richiesta sia terminata. In Apache 1.3 questa impostazione ha impostazione predefinita a off, ma è sempre bene verificare. È possibile trovare questo nel file httpd.conf, così, cercare o aggiungere questa riga:
HostnameLookups off
Se siete interessati a ulteriori suggerimenti specifici, potete approfondire su questa pagina del sito Apache
Hardware e Networking
Non ci occuperemo in maniera approfondita di rete e hardware in quanto sono fortemente dipendenti da host e ISP. Pochi offrono alcun controllo su questo dominio. Ci sono tuttavia alcune linee guida che vi suggeriremo:
Leverage SSD Drive.
Se si ha la possibilità di scegliere i dischi SSD, fatelo. La maggior parte dei nuovi server sono dotati di default, ma deve essere specificato nel processo di ordinazione. Durante l’ottimizzazione hardware, l’obiettivo è quello di concentrarsi su come leggere e scrivere, rendendo più veloce, ove possibile, SSD aiuta a raggiungere questo obiettivo, in quanto sono molto più veloci e più affidabile di HDD.
Sfrutta un CDN. Oltre alla cache di risorse comuni, i CDN consentono di ottimizzare l’aspetto rete accorciando la distanza tra un sito e ai suoi visitatori. Il Sucuri Firewall include un Anycast CDN, con molti punti di presenza.
Server con unico scopo. Ricordate la discussione “fare meno cose”? Meno servizi in esecuzione sul server, meglio è.
Disabilitare tutti i servizi non necessari dal server web e mantenere solo i pezzi necessari per mantenere il vostro sito in esecuzione. Troppo spesso le prestazioni dei server sono rallentate in quanto risorse vengono consumate da altre applicazioni (tipo server di posta.)
Prestazioni e sicurezza
Anche se non abbiamo inizialmente deciso di entrare nel campo delle prestazioni, è diventato un requisito indispensabile per raggiungere i nostri obiettivi con un WAF (Web Application Firewall) basato su cloud.
“Ciò che veramente mi entusiasma, riporta Daniel Cid, è che la maggior parte delle raccomandazioni delle prestazioni descritte qui hanno duplice scopo – aiutano i siti sicuri, migliorando il livello di sicurezza generale.”
Allo stesso modo in cui fa fare al software meno cose per farlo correre più veloce, l’idea di riduzione e isolamento spesso rende le applicazioni più sicure. Ridurre la superficie di attacco complessivo riduce i possibili punti di ingresso per gli exploit.
Garanzie di uptime e disponibilità del sito web possono anche essere considerati parte della sicurezza del sito stesso. Se si disattivano tutti i servizi non necessari, i plugin inutilizzati, i tracker mantenendo un server leggero, sarà molto più difficile scendere a compromessi.
Ci auguriamo che questa guida vi sia stata utile per darvi una comprensione di base di come le prestazioni di un sito funzionino sotto tutti e tre gli aspetti.
Come reputi la sicurezza e la performance del tuo sito?
chiedimi maggiori informazioni sulla sicurezza online!
Lascia un commento