SlideShare a Scribd company logo
1 of 66
Download to read offline
Migliorare la velocità di un sito
passo dopo passo
@CardinaleAndrea
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Velocità → Fattore di ranking
Using site speed in web search ranking
http://googlewebmastercentral.blogspot.it/2010/04/using-site-speed-in-web-search-ranking.html
Webmaster Level: All
Friday, April 09, 2010 at 11:00 AM
“You may have heard that here at Google we're obsessed
with speed, in our products and on the web. As part of that
effort, today we're including a new signal in our search
ranking algorithms: site speed.”
Posted by Amit Singhal, Google Fellow and Matt Cutts, Principal Engineer, Google
Search Quality Team
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Velocità → Fattore economico
- minore bounce rate
+ Tempo medio di navigazione
+ Pagine viste x visitatore
Migliorare le performance fa ”guadagnare”
+ conversioni
Approfondimenti:
WPO – Web Performance Optimization
http://www.stevesouders.com/blog/2010/05/07/wpo-web-performance-optimization/
Web Performance Optimization (WPO) – As Business Critical as SEO
http://apmblog.compuware.com/2010/05/19/web-performance-optimization-wpo-as-business-critical-as-seo/#.UMyQmKQhq
Proof that speeding up websites improves online business
http://www.watchingwebsites.com/archives/proof-that-speeding-up-websites-improves-online-business/
Velocity and the Bottom Line
http://radar.oreilly.com/2009/07/velocity-making-your-site-fast.html
Bing and Google Agree: Slow Pages Lose Users
http://radar.oreilly.com/2009/06/bing-and-google-agree-slow-pag.html
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Tools utilizzati
Which loads faster?
http://whichloadsfaster.com/
Load Impact
http://loadimpact.com/
Inoltre:
HAR Viewer
http://code.google.com/p/harviewer/
HAR Storage
http://code.google.com/p/harstorage/
PageSpeed
https://developers.google.com/speed/pagespeed/
Yahoo! YSlow
http://developer.yahoo.com/yslow/
WebPagetest
http://www.webpagetest.org/
GTmetrix
http://gtmetrix.com/
Pingdom
https://www.pingdom.com/
Akamai's Mobitest
http://mobitest.akamai.com/m/index.cgi
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Start
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Step 1
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Step 1
Minify/Combine CSS e JS
Minify → Diminuire il codice → Minore download dati
jQuery 1.8.3 = 247KB → jQuery 1.8.3 Minified = 93,6KB
Combine → Unire più files → Minore richieste al server
primo.css + secondo.css + terzo.css → unico.css
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Step 1
Minify/Combine CSS e JS
Strumenti:
minify - Combines, minifies, and caches JavaScript and CSS files on demand to speed up
page loads. - Google Project Hosting
http://code.google.com/p/minify/
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Step 1
Minify/Combine CSS e JS
Esempio pratico con gruppi dinamici:
.htaccess
RewriteRule ^min/(.*).css$ /min/g=$1.css [L,NC]
PHP
Controller crea un file (es.: asdfghj) in $_SERVER['DOCUMENT_ROOT'].'/pathfile/
contenente i nomi dei files del gruppo (uno per riga) e aggiunge alla pagina il css asdfghj.css
groupsConfig.php
return array(
$_GET['g'] => file($_SERVER['DOCUMENT_ROOT'].'/pathfile/'.$_GET['g'],
FILE_IGNORE_NEW_LINES)
);
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Step 1
Minify/Combine CSS e JS
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Step 1
Minify/Combine CSS e JS
Ma...
Per gestire lo stile relativo alla stampa
non utilizzare un css a parte ma utilizzare:
@media print {
#menu {
display: none;
}
img {
vertical-align: middle;
margin: 5pt;
}
}
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Step 2
Defer parsing of javascript
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Step 2
Defer parsing of javascript
Ritardare il caricamento del javascript
Aumento della velocità percepita
Strumenti:
Nessuno. E' necessario solamente spostare i JS alla fine
prima del tag </body>
Attenzione se utilizzate javascript all'interno dell'HTML
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Step 3
Enable gzip compression
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Step 3
Enable gzip compression
generalmente riduce la dimensione del 70%
Minore download dati
jQuery 1.8.3 = 247KB → Minified = 93,6KB → Gzipped = 32KB
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Step 3
Enable gzip compression
Strumenti:
mod_gzip → Apache 1.3
mod_deflate → Apache 2.x
Esempi:
PHP (script): ob_start("ob_gzhandler");
PHP (php.ini): zlib.output_compression = On
PHP (.htaccess): php_flag zlib.output_compression on
Apache (.htaccess):
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css application/x-javascript
application/javascript
</IfModule>
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Step 3
Enable gzip compression
507005 + 126654 + 109303 = 742962
290801 + 86764 + 19836 = 397401 - 47%
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Step 4
Leverage browser caching
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Step 4
Leverage browser caching
Possiamo “comandare” la cache del browser
Minore download dati
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Step 4
Leverage browser caching
Strumenti:
Headers: Expires | Cache-Control | Last-Modified
Risorse statiche:
Implementare una policy "Never expire" impostando una data molto lontana
Risorse dinamiche:
Utilizzare una data appropriata per il Cache-Control header e utilizzare il
Last-Modified header per segnalare un'eventuale update
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Step 4
Leverage browser caching
Esempi:
.htaccess
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType text/css A31536000
ExpiresByType application/x-javascript A31536000
ExpiresByType text/html A3600
</IfModule>
<FilesMatch ".(css|js|CSS|JS)$">
<IfModule mod_headers.c>
Header set Pragma "public"
Header set Cache-Control "public, must-revalidate, proxy-revalidate"
</IfModule>
</FilesMatch>
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Step 4
Leverage browser caching
Esempi:
PHP (immagini)
// Test image.
$fn = '/test/foo.png';
// Getting headers sent by the client.
$headers = apache_request_headers();
// Checking if the client is validating his cache and if it is current.
if (isset($headers['If-Modified-Since']) && (strtotime($headers['If-Modified-Since']) == filemtime($fn))) {
// Client's cache IS current, so we just respond '304 Not Modified'.
header('Last-Modified: '.gmdate('D, d M Y H:i:s', filemtime($fn)).' GMT', true, 304);
} else {
// Image not cached or cache outdated, we respond '200 OK' and output the image.
header('Last-Modified: '.gmdate('D, d M Y H:i:s', filemtime($fn)).' GMT', true, 200);
header('Content-Length: '.filesize($fn));
header('Content-Type: image/png');
print file_get_contents($fn);
}
Fonte: http://us.php.net/manual/en/function.header.php#61903
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Step 4
-96%
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Leverage browser caching
Step 4
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Leverage browser caching
Step 4
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Steve Souders
Head Performance Engineer at Google
Cache is King
http://www.stevesouders.com/blog/2012/10/11/cache-is-king/
http://www.slideshare.net/souders/cache-is-king
Leverage browser caching
Step 5
Enable Keep-alive
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Step 5
Enable Keep-alive
Il browser e il server web riutilizzano
la stessa connessione per trasferire i file multipli.
Strumenti / Indicazioni:
Modificare configurazione di Apache
vim etc/httpd/conf/httpd.conf
KeepAlive Off → KeepAlive On
service httpd reload
- Riduce la latenza dei trasferimenti HTTP e fornisce una migliore esperienza utente.
- Riduce l'utilizzo della CPU
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Step 5
Enable Keep-alive
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Step 6
Cookie-less domain for static resources
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Step 6
Cookie-less domain for static resources
No cookies per contenuti statici
Consente di parallelizzare i downloads
Al massimo 2/4 domini
altrimenti si ha una penalizzazione DNS lookup
(Es.: Yahoo! → yimg.com, YouTube → ytimg.com, Amazon → images-amazon.com)
www.miosito.it
HTML + componenti dinamici
static1.miosito.it
componenti statici (img, css, js)
static2.miosito.it
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Step 6
Cookie-less domain for static resources
Approfondimenti:
Serve static content from a cookieless domain
www.kensfi.com/serve-static-content-from-a-cookieless-domain/
Serving Static Content from a Cookieless Domain
http://www.ravelrumba.com/blog/static-cookieless-domain/
Using cookieless domains to improve a website performance
http://www.fullondesign.co.uk/coding/1668-using-cookieless-domains-to-improve-a-website-performance.htm
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Step 7
Lazy Load for social media buttons (JS/CSS in genere)
Velocità caricamento iniziale pagina più veloce
Evita eventuali blocchi dei JS
Approfondimenti:
How To Lazy Load Social Share Buttons Like TechCrunch Does
http://www.bloggermint.com/2012/05/how-to-lazy-load-social-share-buttons-like-techcrunch-does/
Add Lazy Loading Social Sharing Buttons to your WordPress Blog
http://wp.tutsplus.com/tutorials/add-lazy-loading-social-sharing-buttons-to-your-wordpress-blog/
Lazy Loading Social Buttons v2
http://www.stylifyyourblog.com/2012/07/lazy-loading-social-buttons-v2.html
Lazy Loading Social Widgets
http://taylor.fausak.me/2012/04/29/lazy-loading-social-widgets/
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Step 7
Lazy Load for social media buttons (JS/CSS in genere)
Esempi:
Caricamento javascript asincrono
var script_tag = document.createElement('script');
script_tag.setAttribute("type","text/javascript");
script_tag.setAttribute("src", "/js/mio.js");
if (script_tag.readyState) {
script_tag.onreadystatechange = function () { // For old versions of IE
if (this.readyState == 'complete' || this.readyState == 'loaded') {
funzioneDaEseguire();
}
};
} else {
script_tag.onload = funzioneDaEseguire;
}
(document.getElementsByTagName("head")[0] || document.documentElement).appendChild(script_tag);
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Step 7
Lazy Load for social media buttons (JS/CSS in genere)
Esempi:
Caricamento javascript asincrono con jQuery
$.getScript('/js/mio.js',function()
{
//eventuale codice da eseguire dopo il caricamento
});
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Step 7
Lazy Load for social media buttons (JS/CSS in genere)
Esempi:
Caricamento CSS asincrono
var css_tag=document.createElement("link");
css_tag.setAttribute("rel", "stylesheet");
css_tag.setAttribute("type", "text/css");
css_tag.setAttribute("href", filename);
(document.getElementsByTagName("head")[0] || document.documentElement).appendChild(css_tag);
Caricamento CSS asincrono con jQuery
var css_link = $("<link>", {
rel: "stylesheet",
type: "text/css",
href: "/css/mio.css"
});
css_link.appendTo('head');
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Step 7
Lazy Load for social media buttons (JS/CSS in genere)
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Step 7
Lazy Load for social media buttons (JS/CSS in genere)
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Step 8
Caching server side
APC
- cache del bytecode compilato degli script PHP
in RAM
- evita il sovraccarico di analisi degli scripts
- evita la compilazione del codice sorgente ad
ogni richiesta
- riduce il carico del server
- aumenta la velocità di codice PHP da 2 a 10
volte
senza APC
con APC
VANTAGGI
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Step 8
Caching server side
Approfondimenti:
PHP Caching to Speed up Dynamically Generated Sites
http://www.theukwebdesigncompany.com/articles/php-caching.php
Using APC with PHP
http://devzone.zend.com/1812/using-apc-with-php/
How to Use APC Caching with PHP
http://www.script-tutorials.com/how-to-use-apc-caching-with-php/
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Work in progress
...
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Risultati ottenuti
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Risultati ottenuti
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Risultati ottenuti
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Risultati ottenuti
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Risultati ottenuti
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Risultati ottenuti
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Prossimo Step?
???
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Prossimo Step?
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Prossimo Step?
Immagini
Strumenti:
Sumsh.it
http://www.smushit.com/ysmush.it/
Optipng
http://optipng.sourceforge.net/
PNG Tools Overview
http://css-ig.net/png-tools-overview.html
Comprimere le immagini
immagini non scalate
attributi width e height del tag img corrispondenti alle dimensioni dell'immagine (o viceversa)
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Prossimo Step?
Immagini
Sprite CSS
Un'unica immagine per n immagini
Minori richieste al web server
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Prossimo Step?
Immagini
Strumenti:
Lazy Load Plugin for jQuery
http://www.appelsiini.net/projects/lazyload
Lazy Load
Ritardare il caricamento delle immagini visualizzandole solo quando necessario
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Prossimo Step?
Immagini
Strumenti / Approfondimenti:
Adaptive Images
http://adaptive-images.com/
Adaptive Images for Responsive Designs
http://24ways.org/2011/adaptive-images-for-responsive-designs/
Adaptive images: solving the responsive image problem
http://www.webdesignerdepot.com/2012/07/adaptive-images-solving-the-responsive-image-problem/
Which responsive images solution should you use?
http://css-tricks.com/which-responsive-images-solution-should-you-use/
HTML5 adaptive images: end of round one
http://html5doctor.com/html5-adaptive-images-end-of-round-one/
Adaptive Images
Visualizzare la dimensione adatta al device utilizzato dall'utente
Fondamentale per siti responsive
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Soluzioni x CMS
Wordpress
W3 Total Cache
http://wordpress.org/extend/plugins/w3-total-cache/
Joomla!
jbetolo
/http://extensions.joomla.org/extensions/core-enhancements/performance/site-performance/11545
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Soluzione All-in-one
mod_pagespeed
https://developers.google.com/speed/pagespeed/mod
- modulo per Apache
- permette l’ottimizzazione automatica di pagine web
- Comprende le ultime tecniche di ottimizzazione web
- 40 filtri di ottimizzazione configurabili
- Possibilità di convertire le immagini in webP
Approfondimenti:
Make the web faster with mod_pagespeed, now out of Beta
http://googlewebmastercentral.blogspot.it/2012/10/make-web-faster-with-modpagespeed-now.html
Automating Web Performance: Mod_pagespeed Case Study
http://giorgiotave.net/automating-web-performance/
Automating Web Performance with mod_pagespeed
http://www.igvita.com/2012/10/10/automating-web-performance-with-mod_pagespeed/
Mod_Pagespeed Performance Review
http://calendar.perfplanet.com/2010/mod_pagespeed-performance-review/
Incrementare le prestazioni di Apache con mod pagespeed
http://guide.debianizzati.org/index.php/Incrementare_le_prestazioni_di_Apache_con_mod_pagespeed
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
e ancora ...
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
MySQL
Database Optimization
- Tools
MySQLTuner
http://mysqltuner.com
- Benchmarking
The Slow Query Log
http://dev.mysql.com/doc/refman/5.1/en/slow-query-log.html
MySQL Benchmark Tool
http://dev.mysql.com/downloads/benchmarks.html
- Approfondimenti
Tuning MySQL Performance with MySQLTuner
http://www.howtoforge.com/tuning-mysql-performance-with-mysqltuner
Identifying MySQL slow queries
http://www.ducea.com/2006/11/06/identifying-mysql-slow-queries/
Measuring Performance (Benchmarking)
http://dev.mysql.com/doc/refman/5.5/en/optimize-benchmarking.html
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
NoSQL
Se realmente necessario
- progettati per memorizzare enormi quantità di dati
si pensi a Google, Twitter e Facebook che memorizzano terabyte di dati ogni giorno
- Massive write performance
Ottimo per applicazioni come Web analytics, Real-time apps
- Fast key-value access
Altri vantaggi:
- schema-free
non prevedono uno schema fisso
- Scalabili orizzontalmente
ovvero la possibilità di aggiungere nodi al sistema per distribuirne il carico
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
NoSQL
Redis
(key-value)
MongoDB
(Document oriented)
OrientDB
(Graph-Document)
BigTable, Cassandra, CouchDB, Apache Jackrabbit, Colayer, Lotus Notes,
Raven DB, XML databases, MarkLogic Server, eXist, BaseX, AllegroGraph,
Core Data, Neo4j, DEX, Tuple space, Memcachedb, SimpleDB,
Tokyo Cabinet, Pincaster, memcached, Velocity, Dynamo, …
Approfondimenti:
NoSQL Databases: Not Only SQL
http://www.andrea-cardinale.it/databases/nosql-databases-not-only-sql.html
What the heck are you actually using NoSQL for?
http://highscalability.com/blog/2010/12/6/what-the-heck-are-you-actually-using-nosql-for.html
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Oltre Apache
Limiti
Connessioni simultanee
massimo numero di richieste simultanee servite
Elevato consumo di risorse
elevato utilizzo di RAM e CPU anche per risorse statiche
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Oltre Apache
Mi stai dicendo di non
utilizzare più Apache ???
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Oltre Apache
Mi stai dicendo di non
utilizzare più Apache ???
NO!!!
Apache è sempre Apache
Ma possiamo trovargli un compagno
Apache ???
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Oltre Apache
Progettato per gestire migliaia di connessioni simultanee con
basso utilizzo di RAM e CPU
Apache è limitato dal numero di thread che la CPU può eseguire. Inoltre processi di Apache
sono “costosi” (50-300MB per processo).
Nginx, può gestire più di 10.000 connessioni simultanee utilizzando circa 2 MB di memoria.
non-blocking event-driven web server
Anziché utilizzare il sistema a threads, gestisce le connessioni con epoll
Utilizza un solo processo (o un piccolo numero di processi) per gestire le connessioni
Ideale per gestire le risorse statiche
Apache anche per servire la richiesta un'immagine carica tutti i moduli necessari per altri
componenti (mod_php, mod_rewrite, etc...)
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Oltre Apache
È arrivato Nginx su
Giorgiotave.it
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Attenti a
- Javascript diventa un linguaggio server side
- Implementato sul JavaScript Engine V8 (il motore di Google Chrome)
- Elevate performance
- Loop e non Thread
- Implementazione della libreria Socket.io che permette di utilizzare la
tecnologia Web Socket sul browser.
Ottimo per: real time apps, web games
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com
Grazie!
Andrea Cardinale
a.cardinale80@gmail.com
www.andrea-cardinale.it
https://plus.google.com/105123558530541749555
@CardinaleAndrea
andreacardinale
Convegno GT - Riccione – 15/16 Dicembre 2012
Migliorare la velocità di un sito
passo dopo passo
di Andrea Cardinale
Blog: http://www.andrea-cardinale.it
Twitter: @CardinaleAndrea
E-mail: a.cardinale80@gmail.com

More Related Content

Viewers also liked

Peraturan bupati-no.-47-ttg-izin-usaha-pengambilan-dan-pengolahan-mineral-buk...
Peraturan bupati-no.-47-ttg-izin-usaha-pengambilan-dan-pengolahan-mineral-buk...Peraturan bupati-no.-47-ttg-izin-usaha-pengambilan-dan-pengolahan-mineral-buk...
Peraturan bupati-no.-47-ttg-izin-usaha-pengambilan-dan-pengolahan-mineral-buk...ppbkab
 
Homenagem aos meus pais e a minha irmã...
Homenagem aos meus pais e a minha irmã...Homenagem aos meus pais e a minha irmã...
Homenagem aos meus pais e a minha irmã...Roberta Saraiva
 
Lei municipal 037-1986_de_09_agosto_de_1986
Lei municipal 037-1986_de_09_agosto_de_1986Lei municipal 037-1986_de_09_agosto_de_1986
Lei municipal 037-1986_de_09_agosto_de_1986watsonlopes
 
Convocados oral junio_13_1_c
Convocados oral junio_13_1_cConvocados oral junio_13_1_c
Convocados oral junio_13_1_cegonzalezlara
 
Perbup nomor-7a-tahun-2011-tentang-penyelenggaraan-sistem-pengendalian-intern...
Perbup nomor-7a-tahun-2011-tentang-penyelenggaraan-sistem-pengendalian-intern...Perbup nomor-7a-tahun-2011-tentang-penyelenggaraan-sistem-pengendalian-intern...
Perbup nomor-7a-tahun-2011-tentang-penyelenggaraan-sistem-pengendalian-intern...ppbkab
 
롯데손해보험 CLC 채용공고
롯데손해보험 CLC 채용공고롯데손해보험 CLC 채용공고
롯데손해보험 CLC 채용공고Boyun Kim
 
Aula dr. lucas galvão 23-09-14
Aula dr. lucas galvão   23-09-14Aula dr. lucas galvão   23-09-14
Aula dr. lucas galvão 23-09-14Fernanda Moreira
 
Arq Utal B2+Entrega 3
Arq Utal   B2+Entrega 3Arq Utal   B2+Entrega 3
Arq Utal B2+Entrega 3laraditzel
 
60318032 baigiang-ktmt-2010
60318032 baigiang-ktmt-201060318032 baigiang-ktmt-2010
60318032 baigiang-ktmt-2010Em Cu
 
Da li film stigmatizuje 24 04-2009
Da li film stigmatizuje 24 04-2009Da li film stigmatizuje 24 04-2009
Da li film stigmatizuje 24 04-2009Olivera Vukovic
 
Swift 0x14 nested types
Swift 0x14 nested typesSwift 0x14 nested types
Swift 0x14 nested typesHyun Jin Moon
 
Codice autoregolamentazione commercialisti
Codice autoregolamentazione commercialistiCodice autoregolamentazione commercialisti
Codice autoregolamentazione commercialistiPaolo Soro
 

Viewers also liked (19)

Peraturan bupati-no.-47-ttg-izin-usaha-pengambilan-dan-pengolahan-mineral-buk...
Peraturan bupati-no.-47-ttg-izin-usaha-pengambilan-dan-pengolahan-mineral-buk...Peraturan bupati-no.-47-ttg-izin-usaha-pengambilan-dan-pengolahan-mineral-buk...
Peraturan bupati-no.-47-ttg-izin-usaha-pengambilan-dan-pengolahan-mineral-buk...
 
Homenagem aos meus pais e a minha irmã...
Homenagem aos meus pais e a minha irmã...Homenagem aos meus pais e a minha irmã...
Homenagem aos meus pais e a minha irmã...
 
Columna vertebral enfermería
Columna vertebral enfermeríaColumna vertebral enfermería
Columna vertebral enfermería
 
Lei municipal 037-1986_de_09_agosto_de_1986
Lei municipal 037-1986_de_09_agosto_de_1986Lei municipal 037-1986_de_09_agosto_de_1986
Lei municipal 037-1986_de_09_agosto_de_1986
 
Convocados oral junio_13_1_c
Convocados oral junio_13_1_cConvocados oral junio_13_1_c
Convocados oral junio_13_1_c
 
Perbup nomor-7a-tahun-2011-tentang-penyelenggaraan-sistem-pengendalian-intern...
Perbup nomor-7a-tahun-2011-tentang-penyelenggaraan-sistem-pengendalian-intern...Perbup nomor-7a-tahun-2011-tentang-penyelenggaraan-sistem-pengendalian-intern...
Perbup nomor-7a-tahun-2011-tentang-penyelenggaraan-sistem-pengendalian-intern...
 
Tipo Carioca - outubro 2013
Tipo Carioca - outubro 2013Tipo Carioca - outubro 2013
Tipo Carioca - outubro 2013
 
Ws basappar
Ws basapparWs basappar
Ws basappar
 
롯데손해보험 CLC 채용공고
롯데손해보험 CLC 채용공고롯데손해보험 CLC 채용공고
롯데손해보험 CLC 채용공고
 
Aula dr. lucas galvão 23-09-14
Aula dr. lucas galvão   23-09-14Aula dr. lucas galvão   23-09-14
Aula dr. lucas galvão 23-09-14
 
Arq Utal B2+Entrega 3
Arq Utal   B2+Entrega 3Arq Utal   B2+Entrega 3
Arq Utal B2+Entrega 3
 
60318032 baigiang-ktmt-2010
60318032 baigiang-ktmt-201060318032 baigiang-ktmt-2010
60318032 baigiang-ktmt-2010
 
I pad från början
I pad från börjanI pad från början
I pad från början
 
Guia reporte final ss . ii
Guia reporte final ss . iiGuia reporte final ss . ii
Guia reporte final ss . ii
 
Da li film stigmatizuje 24 04-2009
Da li film stigmatizuje 24 04-2009Da li film stigmatizuje 24 04-2009
Da li film stigmatizuje 24 04-2009
 
Relacion creditos banagrario caceres
Relacion creditos banagrario   caceresRelacion creditos banagrario   caceres
Relacion creditos banagrario caceres
 
Swift 0x14 nested types
Swift 0x14 nested typesSwift 0x14 nested types
Swift 0x14 nested types
 
Codice autoregolamentazione commercialisti
Codice autoregolamentazione commercialistiCodice autoregolamentazione commercialisti
Codice autoregolamentazione commercialisti
 
El carro
El carroEl carro
El carro
 

Similar to Web Performance Optimization

Aggiornato! Il sito veloce senza codice
Aggiornato! Il sito veloce senza codiceAggiornato! Il sito veloce senza codice
Aggiornato! Il sito veloce senza codiceStefania Massenza
 
WPDay 2015 - WordPress Performance Optimization - Pordenone - 13 Novembre 2015
WPDay 2015 - WordPress Performance Optimization - Pordenone - 13 Novembre 2015WPDay 2015 - WordPress Performance Optimization - Pordenone - 13 Novembre 2015
WPDay 2015 - WordPress Performance Optimization - Pordenone - 13 Novembre 2015Andrea Cardinali
 
Seo on site - La stai facendo nel modo giusto? | GT Conference Torino 2013
Seo on site - La stai facendo nel modo giusto? | GT Conference Torino 2013Seo on site - La stai facendo nel modo giusto? | GT Conference Torino 2013
Seo on site - La stai facendo nel modo giusto? | GT Conference Torino 2013Andrea Cardinali
 
Miglioriamo le performance di wordpress
Miglioriamo le performance di wordpress Miglioriamo le performance di wordpress
Miglioriamo le performance di wordpress GGDBologna
 
WordCamp Bari Maggio 2019
WordCamp Bari Maggio 2019WordCamp Bari Maggio 2019
WordCamp Bari Maggio 2019Alice Orrù
 
Ottimizzare WordPress non solo per i motori di ricerca
Ottimizzare WordPress non solo per i motori di ricercaOttimizzare WordPress non solo per i motori di ricerca
Ottimizzare WordPress non solo per i motori di ricercaTiziano Fogliata
 
Velocizzare i siti in Joomla con dei plugin fenomenali
Velocizzare i siti in Joomla con dei plugin fenomenaliVelocizzare i siti in Joomla con dei plugin fenomenali
Velocizzare i siti in Joomla con dei plugin fenomenaliEnthous Agenzia Web
 
Come velocizzare un sito web | Corso SEO a Bologna
Come velocizzare un sito web | Corso SEO a BolognaCome velocizzare un sito web | Corso SEO a Bologna
Come velocizzare un sito web | Corso SEO a BolognaWeb2Lab Studio
 
Come e perché ($) migliorare le prestazioni web.pdf
Come e perché ($) migliorare le prestazioni web.pdfCome e perché ($) migliorare le prestazioni web.pdf
Come e perché ($) migliorare le prestazioni web.pdfAndrea Verlicchi
 
Il sito veloce senza codice, versione originale WordCamp 2020
Il sito veloce senza codice, versione originale WordCamp 2020Il sito veloce senza codice, versione originale WordCamp 2020
Il sito veloce senza codice, versione originale WordCamp 2020Stefania Massenza
 
Le basi della SEO per i blogger @TBNetalks
Le basi della SEO per i blogger @TBNetalksLe basi della SEO per i blogger @TBNetalks
Le basi della SEO per i blogger @TBNetalksTSW
 
Cina e Russia: Sviluppo di un'attività di Search Engine Marketing
Cina e Russia: Sviluppo di un'attività di Search Engine MarketingCina e Russia: Sviluppo di un'attività di Search Engine Marketing
Cina e Russia: Sviluppo di un'attività di Search Engine MarketingAlessandro Cuomo
 
Convegno gt 2006: Presentazione e Wordpress
Convegno gt 2006: Presentazione e WordpressConvegno gt 2006: Presentazione e Wordpress
Convegno gt 2006: Presentazione e Wordpressconvegnogt
 
Case study IlManicaretto.it
Case study IlManicaretto.itCase study IlManicaretto.it
Case study IlManicaretto.itWebeing.net
 
Web marketing now - Web Analytics
Web marketing now - Web AnalyticsWeb marketing now - Web Analytics
Web marketing now - Web AnalyticsAndrea Cardinale
 
SEO per Blogger: le Basi, le Novità e Qualche Utility per Wordpress
SEO per Blogger: le Basi, le Novità e Qualche Utility per WordpressSEO per Blogger: le Basi, le Novità e Qualche Utility per Wordpress
SEO per Blogger: le Basi, le Novità e Qualche Utility per WordpressAlessandro Cuomo
 
Technical SEO Audit Checklist - Giovanni Sacheli Search Marketing Connect 2018
Technical SEO Audit Checklist - Giovanni Sacheli Search Marketing Connect 2018Technical SEO Audit Checklist - Giovanni Sacheli Search Marketing Connect 2018
Technical SEO Audit Checklist - Giovanni Sacheli Search Marketing Connect 2018Giovanni Sacheli
 
WordPress per giornalisti freelance
WordPress per giornalisti freelance  WordPress per giornalisti freelance
WordPress per giornalisti freelance GGDBologna
 

Similar to Web Performance Optimization (20)

Aggiornato! Il sito veloce senza codice
Aggiornato! Il sito veloce senza codiceAggiornato! Il sito veloce senza codice
Aggiornato! Il sito veloce senza codice
 
WPDay 2015 - WordPress Performance Optimization - Pordenone - 13 Novembre 2015
WPDay 2015 - WordPress Performance Optimization - Pordenone - 13 Novembre 2015WPDay 2015 - WordPress Performance Optimization - Pordenone - 13 Novembre 2015
WPDay 2015 - WordPress Performance Optimization - Pordenone - 13 Novembre 2015
 
Seo on site - La stai facendo nel modo giusto? | GT Conference Torino 2013
Seo on site - La stai facendo nel modo giusto? | GT Conference Torino 2013Seo on site - La stai facendo nel modo giusto? | GT Conference Torino 2013
Seo on site - La stai facendo nel modo giusto? | GT Conference Torino 2013
 
Miglioriamo le performance di wordpress
Miglioriamo le performance di wordpress Miglioriamo le performance di wordpress
Miglioriamo le performance di wordpress
 
WordCamp Bari Maggio 2019
WordCamp Bari Maggio 2019WordCamp Bari Maggio 2019
WordCamp Bari Maggio 2019
 
Ottimizzare WordPress non solo per i motori di ricerca
Ottimizzare WordPress non solo per i motori di ricercaOttimizzare WordPress non solo per i motori di ricerca
Ottimizzare WordPress non solo per i motori di ricerca
 
Velocizzare i siti in Joomla con dei plugin fenomenali
Velocizzare i siti in Joomla con dei plugin fenomenaliVelocizzare i siti in Joomla con dei plugin fenomenali
Velocizzare i siti in Joomla con dei plugin fenomenali
 
Come velocizzare un sito web | Corso SEO a Bologna
Come velocizzare un sito web | Corso SEO a BolognaCome velocizzare un sito web | Corso SEO a Bologna
Come velocizzare un sito web | Corso SEO a Bologna
 
Come e perché ($) migliorare le prestazioni web.pdf
Come e perché ($) migliorare le prestazioni web.pdfCome e perché ($) migliorare le prestazioni web.pdf
Come e perché ($) migliorare le prestazioni web.pdf
 
Il sito veloce senza codice, versione originale WordCamp 2020
Il sito veloce senza codice, versione originale WordCamp 2020Il sito veloce senza codice, versione originale WordCamp 2020
Il sito veloce senza codice, versione originale WordCamp 2020
 
Le basi della SEO per i blogger @TBNetalks
Le basi della SEO per i blogger @TBNetalksLe basi della SEO per i blogger @TBNetalks
Le basi della SEO per i blogger @TBNetalks
 
Cina e Russia: Sviluppo di un'attività di Search Engine Marketing
Cina e Russia: Sviluppo di un'attività di Search Engine MarketingCina e Russia: Sviluppo di un'attività di Search Engine Marketing
Cina e Russia: Sviluppo di un'attività di Search Engine Marketing
 
Primo Convegno GT
Primo Convegno GTPrimo Convegno GT
Primo Convegno GT
 
Convegno gt 2006: Presentazione e Wordpress
Convegno gt 2006: Presentazione e WordpressConvegno gt 2006: Presentazione e Wordpress
Convegno gt 2006: Presentazione e Wordpress
 
Case study IlManicaretto.it
Case study IlManicaretto.itCase study IlManicaretto.it
Case study IlManicaretto.it
 
Madaudo
MadaudoMadaudo
Madaudo
 
Web marketing now - Web Analytics
Web marketing now - Web AnalyticsWeb marketing now - Web Analytics
Web marketing now - Web Analytics
 
SEO per Blogger: le Basi, le Novità e Qualche Utility per Wordpress
SEO per Blogger: le Basi, le Novità e Qualche Utility per WordpressSEO per Blogger: le Basi, le Novità e Qualche Utility per Wordpress
SEO per Blogger: le Basi, le Novità e Qualche Utility per Wordpress
 
Technical SEO Audit Checklist - Giovanni Sacheli Search Marketing Connect 2018
Technical SEO Audit Checklist - Giovanni Sacheli Search Marketing Connect 2018Technical SEO Audit Checklist - Giovanni Sacheli Search Marketing Connect 2018
Technical SEO Audit Checklist - Giovanni Sacheli Search Marketing Connect 2018
 
WordPress per giornalisti freelance
WordPress per giornalisti freelance  WordPress per giornalisti freelance
WordPress per giornalisti freelance
 

Web Performance Optimization

  • 1. Migliorare la velocità di un sito passo dopo passo @CardinaleAndrea Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 2.
  • 3. Velocità → Fattore di ranking Using site speed in web search ranking http://googlewebmastercentral.blogspot.it/2010/04/using-site-speed-in-web-search-ranking.html Webmaster Level: All Friday, April 09, 2010 at 11:00 AM “You may have heard that here at Google we're obsessed with speed, in our products and on the web. As part of that effort, today we're including a new signal in our search ranking algorithms: site speed.” Posted by Amit Singhal, Google Fellow and Matt Cutts, Principal Engineer, Google Search Quality Team Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 4. Velocità → Fattore economico - minore bounce rate + Tempo medio di navigazione + Pagine viste x visitatore Migliorare le performance fa ”guadagnare” + conversioni Approfondimenti: WPO – Web Performance Optimization http://www.stevesouders.com/blog/2010/05/07/wpo-web-performance-optimization/ Web Performance Optimization (WPO) – As Business Critical as SEO http://apmblog.compuware.com/2010/05/19/web-performance-optimization-wpo-as-business-critical-as-seo/#.UMyQmKQhq Proof that speeding up websites improves online business http://www.watchingwebsites.com/archives/proof-that-speeding-up-websites-improves-online-business/ Velocity and the Bottom Line http://radar.oreilly.com/2009/07/velocity-making-your-site-fast.html Bing and Google Agree: Slow Pages Lose Users http://radar.oreilly.com/2009/06/bing-and-google-agree-slow-pag.html Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 5. Tools utilizzati Which loads faster? http://whichloadsfaster.com/ Load Impact http://loadimpact.com/ Inoltre: HAR Viewer http://code.google.com/p/harviewer/ HAR Storage http://code.google.com/p/harstorage/ PageSpeed https://developers.google.com/speed/pagespeed/ Yahoo! YSlow http://developer.yahoo.com/yslow/ WebPagetest http://www.webpagetest.org/ GTmetrix http://gtmetrix.com/ Pingdom https://www.pingdom.com/ Akamai's Mobitest http://mobitest.akamai.com/m/index.cgi Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 6. Start Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 7. Step 1 Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 8. Step 1 Minify/Combine CSS e JS Minify → Diminuire il codice → Minore download dati jQuery 1.8.3 = 247KB → jQuery 1.8.3 Minified = 93,6KB Combine → Unire più files → Minore richieste al server primo.css + secondo.css + terzo.css → unico.css Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 9. Step 1 Minify/Combine CSS e JS Strumenti: minify - Combines, minifies, and caches JavaScript and CSS files on demand to speed up page loads. - Google Project Hosting http://code.google.com/p/minify/ Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 10. Step 1 Minify/Combine CSS e JS Esempio pratico con gruppi dinamici: .htaccess RewriteRule ^min/(.*).css$ /min/g=$1.css [L,NC] PHP Controller crea un file (es.: asdfghj) in $_SERVER['DOCUMENT_ROOT'].'/pathfile/ contenente i nomi dei files del gruppo (uno per riga) e aggiunge alla pagina il css asdfghj.css groupsConfig.php return array( $_GET['g'] => file($_SERVER['DOCUMENT_ROOT'].'/pathfile/'.$_GET['g'], FILE_IGNORE_NEW_LINES) ); Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 11. Step 1 Minify/Combine CSS e JS Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 12. Step 1 Minify/Combine CSS e JS Ma... Per gestire lo stile relativo alla stampa non utilizzare un css a parte ma utilizzare: @media print { #menu { display: none; } img { vertical-align: middle; margin: 5pt; } } Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 13. Step 2 Defer parsing of javascript Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 14. Step 2 Defer parsing of javascript Ritardare il caricamento del javascript Aumento della velocità percepita Strumenti: Nessuno. E' necessario solamente spostare i JS alla fine prima del tag </body> Attenzione se utilizzate javascript all'interno dell'HTML Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 15. Step 3 Enable gzip compression Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 16. Step 3 Enable gzip compression generalmente riduce la dimensione del 70% Minore download dati jQuery 1.8.3 = 247KB → Minified = 93,6KB → Gzipped = 32KB Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 17. Step 3 Enable gzip compression Strumenti: mod_gzip → Apache 1.3 mod_deflate → Apache 2.x Esempi: PHP (script): ob_start("ob_gzhandler"); PHP (php.ini): zlib.output_compression = On PHP (.htaccess): php_flag zlib.output_compression on Apache (.htaccess): <IfModule mod_deflate.c> AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css application/x-javascript application/javascript </IfModule> Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 18. Step 3 Enable gzip compression 507005 + 126654 + 109303 = 742962 290801 + 86764 + 19836 = 397401 - 47% Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 19. Step 4 Leverage browser caching Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 20. Step 4 Leverage browser caching Possiamo “comandare” la cache del browser Minore download dati Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 21. Step 4 Leverage browser caching Strumenti: Headers: Expires | Cache-Control | Last-Modified Risorse statiche: Implementare una policy "Never expire" impostando una data molto lontana Risorse dinamiche: Utilizzare una data appropriata per il Cache-Control header e utilizzare il Last-Modified header per segnalare un'eventuale update Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 22. Step 4 Leverage browser caching Esempi: .htaccess <IfModule mod_expires.c> ExpiresActive On ExpiresByType text/css A31536000 ExpiresByType application/x-javascript A31536000 ExpiresByType text/html A3600 </IfModule> <FilesMatch ".(css|js|CSS|JS)$"> <IfModule mod_headers.c> Header set Pragma "public" Header set Cache-Control "public, must-revalidate, proxy-revalidate" </IfModule> </FilesMatch> Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 23. Step 4 Leverage browser caching Esempi: PHP (immagini) // Test image. $fn = '/test/foo.png'; // Getting headers sent by the client. $headers = apache_request_headers(); // Checking if the client is validating his cache and if it is current. if (isset($headers['If-Modified-Since']) && (strtotime($headers['If-Modified-Since']) == filemtime($fn))) { // Client's cache IS current, so we just respond '304 Not Modified'. header('Last-Modified: '.gmdate('D, d M Y H:i:s', filemtime($fn)).' GMT', true, 304); } else { // Image not cached or cache outdated, we respond '200 OK' and output the image. header('Last-Modified: '.gmdate('D, d M Y H:i:s', filemtime($fn)).' GMT', true, 200); header('Content-Length: '.filesize($fn)); header('Content-Type: image/png'); print file_get_contents($fn); } Fonte: http://us.php.net/manual/en/function.header.php#61903 Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 24. Step 4 -96% Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com Leverage browser caching
  • 25. Step 4 Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com Leverage browser caching
  • 26. Step 4 Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com Steve Souders Head Performance Engineer at Google Cache is King http://www.stevesouders.com/blog/2012/10/11/cache-is-king/ http://www.slideshare.net/souders/cache-is-king Leverage browser caching
  • 27. Step 5 Enable Keep-alive Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 28. Step 5 Enable Keep-alive Il browser e il server web riutilizzano la stessa connessione per trasferire i file multipli. Strumenti / Indicazioni: Modificare configurazione di Apache vim etc/httpd/conf/httpd.conf KeepAlive Off → KeepAlive On service httpd reload - Riduce la latenza dei trasferimenti HTTP e fornisce una migliore esperienza utente. - Riduce l'utilizzo della CPU Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 29. Step 5 Enable Keep-alive Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 30. Step 6 Cookie-less domain for static resources Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 31. Step 6 Cookie-less domain for static resources No cookies per contenuti statici Consente di parallelizzare i downloads Al massimo 2/4 domini altrimenti si ha una penalizzazione DNS lookup (Es.: Yahoo! → yimg.com, YouTube → ytimg.com, Amazon → images-amazon.com) www.miosito.it HTML + componenti dinamici static1.miosito.it componenti statici (img, css, js) static2.miosito.it Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 32. Step 6 Cookie-less domain for static resources Approfondimenti: Serve static content from a cookieless domain www.kensfi.com/serve-static-content-from-a-cookieless-domain/ Serving Static Content from a Cookieless Domain http://www.ravelrumba.com/blog/static-cookieless-domain/ Using cookieless domains to improve a website performance http://www.fullondesign.co.uk/coding/1668-using-cookieless-domains-to-improve-a-website-performance.htm Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 33. Step 7 Lazy Load for social media buttons (JS/CSS in genere) Velocità caricamento iniziale pagina più veloce Evita eventuali blocchi dei JS Approfondimenti: How To Lazy Load Social Share Buttons Like TechCrunch Does http://www.bloggermint.com/2012/05/how-to-lazy-load-social-share-buttons-like-techcrunch-does/ Add Lazy Loading Social Sharing Buttons to your WordPress Blog http://wp.tutsplus.com/tutorials/add-lazy-loading-social-sharing-buttons-to-your-wordpress-blog/ Lazy Loading Social Buttons v2 http://www.stylifyyourblog.com/2012/07/lazy-loading-social-buttons-v2.html Lazy Loading Social Widgets http://taylor.fausak.me/2012/04/29/lazy-loading-social-widgets/ Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 34. Step 7 Lazy Load for social media buttons (JS/CSS in genere) Esempi: Caricamento javascript asincrono var script_tag = document.createElement('script'); script_tag.setAttribute("type","text/javascript"); script_tag.setAttribute("src", "/js/mio.js"); if (script_tag.readyState) { script_tag.onreadystatechange = function () { // For old versions of IE if (this.readyState == 'complete' || this.readyState == 'loaded') { funzioneDaEseguire(); } }; } else { script_tag.onload = funzioneDaEseguire; } (document.getElementsByTagName("head")[0] || document.documentElement).appendChild(script_tag); Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 35. Step 7 Lazy Load for social media buttons (JS/CSS in genere) Esempi: Caricamento javascript asincrono con jQuery $.getScript('/js/mio.js',function() { //eventuale codice da eseguire dopo il caricamento }); Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 36. Step 7 Lazy Load for social media buttons (JS/CSS in genere) Esempi: Caricamento CSS asincrono var css_tag=document.createElement("link"); css_tag.setAttribute("rel", "stylesheet"); css_tag.setAttribute("type", "text/css"); css_tag.setAttribute("href", filename); (document.getElementsByTagName("head")[0] || document.documentElement).appendChild(css_tag); Caricamento CSS asincrono con jQuery var css_link = $("<link>", { rel: "stylesheet", type: "text/css", href: "/css/mio.css" }); css_link.appendTo('head'); Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 37. Step 7 Lazy Load for social media buttons (JS/CSS in genere) Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 38. Step 7 Lazy Load for social media buttons (JS/CSS in genere) Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 39. Step 8 Caching server side APC - cache del bytecode compilato degli script PHP in RAM - evita il sovraccarico di analisi degli scripts - evita la compilazione del codice sorgente ad ogni richiesta - riduce il carico del server - aumenta la velocità di codice PHP da 2 a 10 volte senza APC con APC VANTAGGI Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 40. Step 8 Caching server side Approfondimenti: PHP Caching to Speed up Dynamically Generated Sites http://www.theukwebdesigncompany.com/articles/php-caching.php Using APC with PHP http://devzone.zend.com/1812/using-apc-with-php/ How to Use APC Caching with PHP http://www.script-tutorials.com/how-to-use-apc-caching-with-php/ Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 41. Work in progress ... Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 42. Risultati ottenuti Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 43. Risultati ottenuti Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 44. Risultati ottenuti Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 45. Risultati ottenuti Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 46. Risultati ottenuti Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 47. Risultati ottenuti Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 48. Prossimo Step? ??? Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 49. Prossimo Step? Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 50. Prossimo Step? Immagini Strumenti: Sumsh.it http://www.smushit.com/ysmush.it/ Optipng http://optipng.sourceforge.net/ PNG Tools Overview http://css-ig.net/png-tools-overview.html Comprimere le immagini immagini non scalate attributi width e height del tag img corrispondenti alle dimensioni dell'immagine (o viceversa) Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 51. Prossimo Step? Immagini Sprite CSS Un'unica immagine per n immagini Minori richieste al web server Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 52. Prossimo Step? Immagini Strumenti: Lazy Load Plugin for jQuery http://www.appelsiini.net/projects/lazyload Lazy Load Ritardare il caricamento delle immagini visualizzandole solo quando necessario Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 53. Prossimo Step? Immagini Strumenti / Approfondimenti: Adaptive Images http://adaptive-images.com/ Adaptive Images for Responsive Designs http://24ways.org/2011/adaptive-images-for-responsive-designs/ Adaptive images: solving the responsive image problem http://www.webdesignerdepot.com/2012/07/adaptive-images-solving-the-responsive-image-problem/ Which responsive images solution should you use? http://css-tricks.com/which-responsive-images-solution-should-you-use/ HTML5 adaptive images: end of round one http://html5doctor.com/html5-adaptive-images-end-of-round-one/ Adaptive Images Visualizzare la dimensione adatta al device utilizzato dall'utente Fondamentale per siti responsive Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 54. Soluzioni x CMS Wordpress W3 Total Cache http://wordpress.org/extend/plugins/w3-total-cache/ Joomla! jbetolo /http://extensions.joomla.org/extensions/core-enhancements/performance/site-performance/11545 Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 55. Soluzione All-in-one mod_pagespeed https://developers.google.com/speed/pagespeed/mod - modulo per Apache - permette l’ottimizzazione automatica di pagine web - Comprende le ultime tecniche di ottimizzazione web - 40 filtri di ottimizzazione configurabili - Possibilità di convertire le immagini in webP Approfondimenti: Make the web faster with mod_pagespeed, now out of Beta http://googlewebmastercentral.blogspot.it/2012/10/make-web-faster-with-modpagespeed-now.html Automating Web Performance: Mod_pagespeed Case Study http://giorgiotave.net/automating-web-performance/ Automating Web Performance with mod_pagespeed http://www.igvita.com/2012/10/10/automating-web-performance-with-mod_pagespeed/ Mod_Pagespeed Performance Review http://calendar.perfplanet.com/2010/mod_pagespeed-performance-review/ Incrementare le prestazioni di Apache con mod pagespeed http://guide.debianizzati.org/index.php/Incrementare_le_prestazioni_di_Apache_con_mod_pagespeed Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 56. e ancora ... Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 57. MySQL Database Optimization - Tools MySQLTuner http://mysqltuner.com - Benchmarking The Slow Query Log http://dev.mysql.com/doc/refman/5.1/en/slow-query-log.html MySQL Benchmark Tool http://dev.mysql.com/downloads/benchmarks.html - Approfondimenti Tuning MySQL Performance with MySQLTuner http://www.howtoforge.com/tuning-mysql-performance-with-mysqltuner Identifying MySQL slow queries http://www.ducea.com/2006/11/06/identifying-mysql-slow-queries/ Measuring Performance (Benchmarking) http://dev.mysql.com/doc/refman/5.5/en/optimize-benchmarking.html Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 58. NoSQL Se realmente necessario - progettati per memorizzare enormi quantità di dati si pensi a Google, Twitter e Facebook che memorizzano terabyte di dati ogni giorno - Massive write performance Ottimo per applicazioni come Web analytics, Real-time apps - Fast key-value access Altri vantaggi: - schema-free non prevedono uno schema fisso - Scalabili orizzontalmente ovvero la possibilità di aggiungere nodi al sistema per distribuirne il carico Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 59. NoSQL Redis (key-value) MongoDB (Document oriented) OrientDB (Graph-Document) BigTable, Cassandra, CouchDB, Apache Jackrabbit, Colayer, Lotus Notes, Raven DB, XML databases, MarkLogic Server, eXist, BaseX, AllegroGraph, Core Data, Neo4j, DEX, Tuple space, Memcachedb, SimpleDB, Tokyo Cabinet, Pincaster, memcached, Velocity, Dynamo, … Approfondimenti: NoSQL Databases: Not Only SQL http://www.andrea-cardinale.it/databases/nosql-databases-not-only-sql.html What the heck are you actually using NoSQL for? http://highscalability.com/blog/2010/12/6/what-the-heck-are-you-actually-using-nosql-for.html Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 60. Oltre Apache Limiti Connessioni simultanee massimo numero di richieste simultanee servite Elevato consumo di risorse elevato utilizzo di RAM e CPU anche per risorse statiche Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 61. Oltre Apache Mi stai dicendo di non utilizzare più Apache ??? Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 62. Oltre Apache Mi stai dicendo di non utilizzare più Apache ??? NO!!! Apache è sempre Apache Ma possiamo trovargli un compagno Apache ??? Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 63. Oltre Apache Progettato per gestire migliaia di connessioni simultanee con basso utilizzo di RAM e CPU Apache è limitato dal numero di thread che la CPU può eseguire. Inoltre processi di Apache sono “costosi” (50-300MB per processo). Nginx, può gestire più di 10.000 connessioni simultanee utilizzando circa 2 MB di memoria. non-blocking event-driven web server Anziché utilizzare il sistema a threads, gestisce le connessioni con epoll Utilizza un solo processo (o un piccolo numero di processi) per gestire le connessioni Ideale per gestire le risorse statiche Apache anche per servire la richiesta un'immagine carica tutti i moduli necessari per altri componenti (mod_php, mod_rewrite, etc...) Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 64. Oltre Apache È arrivato Nginx su Giorgiotave.it Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 65. Attenti a - Javascript diventa un linguaggio server side - Implementato sul JavaScript Engine V8 (il motore di Google Chrome) - Elevate performance - Loop e non Thread - Implementazione della libreria Socket.io che permette di utilizzare la tecnologia Web Socket sul browser. Ottimo per: real time apps, web games Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com
  • 66. Grazie! Andrea Cardinale a.cardinale80@gmail.com www.andrea-cardinale.it https://plus.google.com/105123558530541749555 @CardinaleAndrea andreacardinale Convegno GT - Riccione – 15/16 Dicembre 2012 Migliorare la velocità di un sito passo dopo passo di Andrea Cardinale Blog: http://www.andrea-cardinale.it Twitter: @CardinaleAndrea E-mail: a.cardinale80@gmail.com