2. @andreacardinali
Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
ABOUT ME
▶ DEVELOPER & SEO
▶ C.O.O. @ T.C. INFORMATICA
▶ LAVORO CON WORDPRESS DAL 2009
▶ CO-ORGANIZER @ WORDPRESS MEETUP
ROMAGNA
3. @andreacardinali
Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
DI COSA PARLERÒ
1. HTTP/2
2. HTTP/2 E WEB PERFORMANCE
3. TECNICHE DI W.P.O. OBSOLETE
4. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
VUOI VINCERE UNA
CONSULENZA SU WP e
W.P.O. ?
TWEETA CON #wmf17
CITANDO
@andreacardinali
* L’account vincitore verrà estratto al termine dello speech
5. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
HTTP/2
6. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
MAGGIO 2015
7. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
BASATO SU SPDY
8. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
SPDY AVEVA
L’OBIETTIVO DI
RIDURRE DEL
50% IL PAGE
LOAD TIME
9. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
EVOLUZIONE
DI
HTTP/1.1
10. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
HTTP/2 NON
RICHIEDE
MODIFICA AL
CODICE
11. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
HTTP/2 È
IMPLEMENTATO
DAL WEB
SERVER
12. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
IL 92% DEI
BROWSER
UTILIZZATI IN
ITA SUPPORTA
HTTP/2
Fonte: https://caniuse.com/#search=HTTP2
13. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
HTTP/2 È
DIFFERENTE DA
HTTP/1.1
14. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
HTTP/1.1
TRAFERISCE
UNA RISORSA
PER CONNESSIONE
IN SERIE
15. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
HTTP/1.1
UTILIZZA PIÚ
CONNESSIONI
16. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
1 FILE =
1 CONNESSIONE
18. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
HTTP/2
TRASFERISCE
PIÙ RISORSE
IN PARALLELO
(multiplexing)
19. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
HTTP/2 UTILIZZA
UNA UNICA
CONNESSIONE
(per origine)
23. @andreacardinali
Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
HTTP/1.1vs HTTP/2
http://www.httpvshttps.com/
24. @andreacardinali
Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
RICAPITOLANDO
•http/2 è retrocompatibile e ampiamente
supportato
•http/2 richiede https
•http/2 riduce il tempo di caricamento della
pagina
•http/2 scarica i file in parallelo utilizzando
un’unica connessione (per host)
25. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di RiminiAndrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
HTTP/2
E VELOCITÁ
26. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
LA VELOCITÁ
DIPENDE PER
80% - 90%
DAL FRONTEND
27. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
IL SERVER
INCIDE PER UN
10% - 20%
(tranne in casiclamorosicon hostingsupercheap)
28. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
PERCHÉ LA
VELOCITÁ
È COSÌ
IMPORTANTE?
29. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di RiminiAndrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
L’80% DEGLI UTENTI È
DISPOSTO AD
ASPETTARE AL MASSIMO
3 SECONDI PRIMA DI
ABBANDONARE IL SITO.
Fonte:RadwareFastview2015
30. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di RiminiAndrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
SITO PIÙ VELOCE
=
MIGLIOR USER
EXPERIENCE
31. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di RiminiAndrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
MIGLIOR UX
=
MAGGIORI
PROFITTI
32. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
SITO VELOCE
=
1 SECONDO
32
33. @andreacardinali
Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
PER APPROFONDIRE
/AndreaCardinali
34. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di RiminiAndrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
WEB
PERFOMANCE
OPTIMIZATION
35. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
PERFORMANCE
PLUGIN
36. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
PLUGIN INSTALLATI
CODICE
OTTIMIZZATO
37. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
PERFORMANCE
TEMI
MARKETPLACE
38. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
TEMA CUSTOM
39. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
TEMA MARKETPLACE
40. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
TEMA CUSTOM vs
MARKETPLACE
41. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
W.P.O.
(EVERGREEN)
42. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
ABILITA LA
COMPRESSIONE
GZIP
43. @andreacardinali
Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
COMPRESSIONEGZIP
•Riduce il peso delle risorse testuali (codice
html, js, css) fino all’80/90%
•Deve essere abilitata sul server
44. @andreacardinali
Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
ABILITARE COMPRESSIONEGZIP
(.HTACCESS)
# Gzip compression
<IfModule mod_deflate.c>
# Active compression
SetOutputFilter DEFLATE
#[…]
</IfModule>
45. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
EXPIRE
HEADERS
46. @andreacardinali
Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
EXPIRE HEADERS (.HTACCESS)
•Intestazione http
•Indicano la scadenza del file richiesto
•Se il file è già presente nella cache del
browser viene restituito status code 304
•L’intestazione può essere generata tramite
php o .htaccess (consigliato)
47. @andreacardinali
Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
EXPIRE HEADERS
<IfModule mod_expires.c>
ExpiresActive on
ExpiresDefault "access plus 1 month“
# Media: images, video, audio
ExpiresByType image/jpeg "access plus 1 month "
</IfModule>
https://httpd.apache.org/docs/current/mod/mod_expires.html
48. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
TUTTE LE DIRETTIVE
NEL .HTACCESS
VANNO PRIMA DI
# BEGIN WordPress
49. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
LIMITARE I DNS
LOOKUP
50. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
PER OGNI HOST
IL BROWSER
EFFETUA UN
DNS LOOKUP
51. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
ORDINAMENTO
JS E CSS
52. @andreacardinali
Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
ORDINE DI CARICAMENTOCSS/JS
CSS IN CIMA (NELL’HEAD)
• vengono scaricati in parallelo
• permettono al browser di eseguire più velocemente il rendering della
pagina
JAVASCRIPT IN FONDO (ideale prima di </body> o comunque dopo i css)
• bloccano il rendering della pagina
• vengono scaricati in serie ed eseguiti
52
53. @andreacardinali
Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
wp_enqueue_script()
wp_enqueue_script(
string $handle,
string $src = /slideshow/andrea-cardinali-wordpress-performance-optimization-cos-cambiato-con-http2/102849723/&
array $deps = array(),
string $ver = false,
bool $in_footer = false )
https://developer.wordpress.org/reference/functions/wp_enqueue_script/
54. @andreacardinali
Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
wp_enqueue_style()
wp_enqueue_style(
string $handle,
string $src = /slideshow/andrea-cardinali-wordpress-performance-optimization-cos-cambiato-con-http2/102849723/&
array $deps = array(),
string|bool|null $ver = false,
string $media = 'all' )
https://developer.wordpress.org/reference/functions/wp_enqueue_style/
55. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
AUMENTARE LA
VELOCITÁ
PERCEPITA
56. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
PRIORITÁ
AI CONTENUTI
VISIBILI
57. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
58. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
MOSTRARE IL
CONTENUTO
ABOVE THE FOLD
IL PIÚ
VELOCEMENTE
POSSIBILE
59. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
LAZY LOADING
IMMAGINI
60. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
57 % DEL PESO
DELLA PAGINA
CAUSATO
DA
IMMAGINIhttp://httparchive.org/interesting.php#bytesperpage
61. @andreacardinali
Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
LAZY LOAD IMMAGINI
http://httparchive.org/interesting.php#bytesperpage
61
62. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
LE IMMAGINI
VENGONO
CARICATE SOLO
QUANDO
ENTRANO NEL
VIEWPORT
63. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
RICHIEDE
JAVASCRIPT +
MODIFICA AL
HTML
64. @andreacardinali
Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
IMMAGINE CON SEGNAPOSTO
<img src=‘placeholder.png’ data-src=/slideshow/andrea-cardinali-wordpress-performance-optimization-cos-cambiato-con-http2/102849723/‘original.png’ />
65. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
<img src=/slideshow/andrea-cardinali-wordpress-performance-optimization-cos-cambiato-con-http2/102849723/‘wmf17.png’/>
66. @andreacardinali
Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
ESEMPIO DI LAZY LOAD
<img src=‘placeholder.png’ data-src=/slideshow/andrea-cardinali-wordpress-performance-optimization-cos-cambiato-con-http2/102849723/‘original.png’ />
<img src=/slideshow/andrea-cardinali-wordpress-performance-optimization-cos-cambiato-con-http2/102849723/‘wmf17.png’/>
$(window).scroll()
if (immagine è nel viewport)
sostituisci l’attributo data-src con src
67. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
IMMAGINI
PROGRESSIVE
68. @andreacardinali
Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
JPEG PROGRESSIVE
68
Immagine sfocataImmagine «bianca»
69. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
CARICAMENTO
ASINCRONO JS
70. @andreacardinali
Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
ATTRIBUTOASYNC
<script src=/slideshow/andrea-cardinali-wordpress-performance-optimization-cos-cambiato-con-http2/102849723/"demo_async.js" async></script>
•Lo script viene eseguito appena è disponibile
•Non blocca il caricamento dei file js successivi
•I file più veloci a essere scaricati vengono eseguiti prima (non
viene rispettato l’ordine)
•Utilizzabile solo per script esterni (con l’attributo src)
https://www.w3schools.com/tags/att_script_async.asp
71. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
CARICAMENTO
DIFFERITO JS
72. @andreacardinali
Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
ATTRIBUTODEFER
<script src=/slideshow/andrea-cardinali-wordpress-performance-optimization-cos-cambiato-con-http2/102849723/"demo_defer.js" defer></script>
•Lo script viene eseguito dopo il parsing della pagina
•Non blocca il caricamento dei file js successivi
•Gli script vengono eseguiti nell’ordine stabilito
•Utilizzabile solo per script esterni (con l’attributo
src)https://www.w3schools.com/tags/att_script_defer.asp
73. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
CRITICAL
RENDER PATH
74. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
CRITICAL RENDER PATH
COSTITUITO DA
CODICE E RISORSE
NECESSARIE A
VISUALIZZARE IL
CONTENUTO
ABOVE THE FOLD
75. @andreacardinali
Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
https://it.wordpress.org/plugins/above-the-fold-optimization/
76. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
CSS INLINE
77. @andreacardinali
Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
wp_add_inline_style()
•Serve per aggiungere CSS in linea
https://codex.wordpress.org/it:Riferimento_funzioni/wp_add_inline_style
78. @andreacardinali
Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
INLINE CSS E JS
Prevede l’inclusione IN LINEA di css e js
PRO
•Riduce il numero di connessioni http
•Può aumentare la velocità percepita
CONTRO
•Impedisce il caching della risorsa
•Aumenta il peso della pagina
79. @andreacardinali
Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
INLINE CSS E JS - HTTP/2
•Utilizzalo solo per file di piccole dimensioni
(~3/4kb)
•Meglio utilizzarlo solo con gzip abilitato
•Utilizzalo per il critical render path
•Valuta in alternativa l’utilizzo di file esterni
80. @andreacardinali
Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
wp_add_inline_script
•Serve per aggiungere js in linea (prima di
</head> o di </body> )
•Sfrutta il sistema di dipendenze di WP
https://developer.wordpress.org/reference/functions/wp_add_inline_script/
81. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
PRERENDER
PREFETCH
82. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
DIRETTIVE PRE-*
INTESTAZIONI
HTTP
o
ATTRIBUTI DI
<LINK>
83. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
IL PRERENDER
PERMETTE DI
CARICARE UNA
PAGINA IN
BACKGROUND
84. @andreacardinali
Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
PRERENDER
PRO
•Caricamento istantaneo (in caso di visita)
CONTRO
•Potenziale spreco delle risorse hw
http://caniuse.com/#search=pre-render
84
//…
<link rel=‘prerender’ href=‘/secondapagina/’>
</head>
85. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
IL DNS-PREFETCH
PERMETTE DI
ANTICIPARE IL
DNS LOOKUP
86. @andreacardinali
Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
PRERENDER
PRO
•Il download delle risorse dall’origine indicato è più
rapido, in quanto il dns lookup è già stato fatto
CONTRO
•Ogni dns lookup richiede tempo extra e se le origini
sono molte, il sito può rallentare
http://caniuse.com/#search=pre-render
86
//…
<link rel=‘dns-prefetch’
href=‘//webmarketingfestival.it’>
</head>
87. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
WP SUPPORTA
IN AUTOMATICO
DNS-PREFETCH
E PRERENDER
88. @andreacardinali
Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
AGGIUNGERE ALTRI HOST
function makewp_example_resource_hints( $hints, $relation_type ) {
if ( 'dns-prefetch' === $relation_type ) {
$hints[] = '//make.wordpress.org';
} else if ( 'prerender' === $relation_type ) {
$hints[] = 'https://make.wordpress.org/great-again';
}
return $hints;
}
add_filter( 'wp_resource_hints', 'makewp_example_resource_hints',
10, 2 )
https://make.wordpress.org/core/2016/07/06/resource-hints-in-4-6/
89. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
SERVER PUSH
90. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
È IL SERVER A
STABILIRE QUALI
RISORSE HANNO
LA PRIORITÁ
91. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
LE RISORSE CON
PRIORITÁ PIÚ
ALTA VENGONO
SCARICATE
PER PRIME
92. @andreacardinali
Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
SERVER PUSH- HTTP/2
PRO
•Utile per prioritizzare le risorse
•Aumenta la velocità percepita
CONTRO
•Soggetto alla same-origin policy
•Può essere disabilitato dal client (la risorsa
verrà comunque scaricata con la priorità
predefinita)
93. @andreacardinali
Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
SERVER PUSH
<?php
header("Link: </css/vendor.css>; rel=preload; as=style",
false);
header("Link: </css/styles.css>; rel=preload; as=style",
false);
header("Link: </images/site/logo--red.svg>; rel=preload;
as=image", false);
?>
94. @andreacardinali
Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
RICAPITOLANDO
•La velocità va oltre i concetti di KB e secondi
•Un sito veloce è un sito percepito come tale
•I plugins non sono la soluzione a tutti i
problemi
•Le performance devono far parte dello
sviluppo del sito e non devono essere
considerate come un extra
95. @andreacardinali
Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
RICAPITOLANDO
•Prioritá ai contenuti above the fold
•Critical render path
•Lazy load per immagini
•Immagini progressive
•Server push
96. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
W.P.O.
BEST WORST
PRACTICES
97. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
CONCATENAZIONE
(COMBINE CSS / JS)
98. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
UNIRE PIÙ FILE
INSIEME PER
RIDURRE IL
NUMERO DI
CONNESSIONI
100. @andreacardinali
Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
CONCATENAZIONE - HTTP/1.1:
PRO
•Riduce il numero di connessioni http
•La compressione gzip puó essere maggiore
◦ File ancora più piccoli
•Va utilizzato insieme agli expire headers
CONTRO
•File di grosse dimensioni
•L’aggiornamento di un file comporta l’invalidazione
di tutto il file
101. @andreacardinali
Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
CONCATENAZIONE -HTTP/2
PRO
•Http/2 puó scaricare più file in parallelo
•Utilizza gli expire headers per invalidare i file
singolarmente
CONTRO
•n.a.
102. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
IMAGE SPRITES
103. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
DOMAIN
SHARDING
105. @andreacardinali
Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
DOMAIN SHARDING - HTTP/1.1
PRO
•Parallelizza i download aumentando la
velocità
CONTRO
•Aumenta il dns lookup time
•Aumenta l’overhead tcp
106. @andreacardinali
Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
DOMAIN SHARDING - HTTP/2
•Utilizza il numero di host minimo
(1 host = 1 connessione)
•Http/2 coalescence
la connessione viene riutilizzata anche per
origini diverse se:
◦ certificato wildcard /EV / SAN (Subject Alternative
Names)
◦ stesso indirizzo IP
107. @andreacardinali
Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
RICAPITOLANDO
•HTTP/1.1 utilizza una connessione per file
•HTTP/2 utilizza una connessione per host
•Ridurre il numero di connessioni http PER HOST
•Evitare:
◦ combine css / js
◦ image sprite
◦ domain sharding
108. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
RICAPITOLANDO..
109. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
The fastest byte is a byte
not sent
Ilya Gregoric
110. @andreacardinali
Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
W.P.O.OK
•Compressione GZIP
•Expire Headers
•Css in cima e js in fondo (async e defer)
•Utilizzare wp_enqueue_*
111. Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
PLUGIN
112. @andreacardinali
Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
PLUGIN CONSIGLIATI- 1
CARICAMENTO ASINCRONO / DIFFERITO
•https://it.wordpress.org/plugins/async-javascript/
LAZY LOAD
•https://it.wordpress.org/plugins/bj-lazy-load/
•https://wordpress.org/plugins/rocket-lazy-load/
PERFORMANCE
•https://wp-rocket.me/it/
•https://it.wordpress.org/plugins/w3-total-cache/
113. @andreacardinali
Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
PLUGIN CONSIGLIATI- 2
OTTIMIZZAZIONE FRONTEND / CRITICAL
RENDER PATH
•https://it.wordpress.org/plugins/above-the-fold-
optimization/
SERVER PUSH
•https://it.wordpress.org/plugins/http2-server-push/
CARICAMENTO CONDIZIONALE JS/CSS
https://wordpress.org/plugins/wp-asset-clean-up/
114. @andreacardinali
Andrea Cardinali - #wmf17 - @andreacardinali - 23 e 24 Giugno 2017 – Palacongressi di Rimini
SLIDES E DOMANDE SUL MASTERCLUB