﻿{"id":1046,"date":"2012-06-13T20:45:41","date_gmt":"2012-06-13T18:45:41","guid":{"rendered":"http:\/\/www.flapane.com\/blog\/?p=1046"},"modified":"2013-09-23T11:22:31","modified_gmt":"2013-09-23T10:22:31","slug":"come-ho-velocizzato-del-300-il-caricamento-delle-pagine-del-sito","status":"publish","type":"post","link":"https:\/\/www.flapane.com\/blog\/2012\/06\/come-ho-velocizzato-del-300-il-caricamento-delle-pagine-del-sito\/","title":{"rendered":"Come ho velocizzato del 300% il caricamento delle pagine del sito"},"content":{"rendered":"<p style=\"text-align: justify;\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-large wp-image-1047 image\" title=\"velocizzare_web\" alt=\"\" src=\"https:\/\/www.flapane.com\/blog\/wp-content\/uploads\/2012\/06\/velocizzare_web-530x263.jpg\" width=\"530\" height=\"263\" srcset=\"https:\/\/www.flapane.com\/blog\/wp-content\/uploads\/2012\/06\/velocizzare_web-530x263.jpg 530w, https:\/\/www.flapane.com\/blog\/wp-content\/uploads\/2012\/06\/velocizzare_web.jpg 550w\" sizes=\"(max-width: 530px) 100vw, 530px\" \/><\/p>\n<p style=\"text-align: justify;\">Google Webmaster Tools possiede una interessante funzione (nella sezione FUNZIONI SPERIMENTALI -&gt; PRESTAZIONI DEL SITO), che permette di monitorare il tempo di caricamento del vostro sito web.<\/p>\n<p style=\"text-align: justify;\">Il sistema analizza qualche decina di pagine casuali, e fa una media dei tempi di caricamento.<\/p>\n<p style=\"text-align: justify;\">Come ci mostra <a title=\"Tempo di caricamento influenza l'abbandono degli utenti\" href=\"http:\/\/blog.kissmetrics.com\/loading-time\/?wide=1\">questo grafico<\/a> di KissMetrics, la percentuale di utenti che decidono di abbandonare il vostro sito, prima che questo abbia finito il caricamento, aumenta drasticamente col passare dei secondi.<\/p>\n<p style=\"text-align: justify;\">Sfondi che pesano 1MB ed oltre, suoni (evitate le musice di sottofondo che partono a tradimento ad ogni costo!), troppe fotografie nella stessa pagina, troppi javascript sono fra le cause pi\u00f9 comuni di un eccessivo caricamento di una pagina web.<\/p>\n<p style=\"text-align: justify;\">Senza perdere ulteriore tempo, andiamo a vedere il risultato, e poi analizziamo come arrivarci:<!--more--><\/p>\n<p style=\"text-align: justify;\"><a href=\"https:\/\/www.flapane.com\/blog\/wp-content\/uploads\/2012\/06\/velocita-caricamento-sito2.jpg\" rel=\"lightbox[1046]\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-large wp-image-1048 image\" title=\"Google webmaster tools: velocit\u00e0 caricamento delle pagine\" alt=\"\" src=\"https:\/\/www.flapane.com\/blog\/wp-content\/uploads\/2012\/06\/velocita-caricamento-sito2-530x74.jpg\" width=\"530\" height=\"74\" srcset=\"https:\/\/www.flapane.com\/blog\/wp-content\/uploads\/2012\/06\/velocita-caricamento-sito2-530x74.jpg 530w, https:\/\/www.flapane.com\/blog\/wp-content\/uploads\/2012\/06\/velocita-caricamento-sito2.jpg 902w\" sizes=\"(max-width: 530px) 100vw, 530px\" \/><\/a><\/p>\n<p style=\"text-align: justify;\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-1051 image\" title=\"Webmaster tools: velocit\u00e0 di caricamento diminuita\" alt=\"\" src=\"https:\/\/www.flapane.com\/blog\/wp-content\/uploads\/2012\/06\/velocita-caricamento-sito.jpg\" width=\"214\" height=\"196\" \/><\/p>\n<p style=\"text-align: justify;\">I dati si riferiscono ovviamente al periodo che ci interessa, ovvero l&#8217;ultimo mese, e sono relative a questo sito web.<\/p>\n<p style=\"text-align: justify;\">Al momento viene indicato un tempo di caricamento medio di 1.4secondi (su meno di 100 pagine). Prima delle ottimizzazioni, come indicato nel grafico, era oltre 4 secondi&#8230; troppo!<\/p>\n<h1 style=\"text-align: justify;\">Elimina i contenuti inutili!<\/h1>\n<p style=\"text-align: justify;\">Non c&#8217;\u00e8 bisogno di riempire ogni pagina con decine di effetti inutili, o sfondi ad alta definizione (la risoluzione dei monitor pi\u00f9 utilizzata nel web, ha ancora 1368 pixel di larghezza). Gli utenti si sentiranno meno confusi, e ringrazieranno.<\/p>\n<h1 style=\"text-align: justify;\">Raggruppa Javascript e fogli di stile CSS<\/h1>\n<p style=\"text-align: justify;\">Se una pagina richiede tre javascript per un qualsivoglia motivo, conviene raggrupparli in un unico file js. In questo modo si ridurranno le richieste al server, fattore determinante nel ridurre i tempi di caricamento. Stesso discorso vale per i fogli di stile.<\/p>\n<h1 style=\"text-align: justify;\">Comprimi le tue immagini JPG e PNG senza ridurne la qualit\u00e0<\/h1>\n<p style=\"text-align: justify;\"><a href=\"http:\/\/freecode.com\/projects\/jpegoptim\">Jpegoptim<\/a> e <a href=\"http:\/\/advsys.net\/ken\/utils.htm\">PNGout<\/a> sono due ottimi programmini (funzionano da linea di comando) che permettono, utilizzando differenti algoritmi, di ridurre la dimensione di una immagine, senza ridurne la qualit\u00e0 (lossless compression). Provare per credere&#8230; l&#8217;immagine di sfondo di questo sito, le tante icone in PNG, ed alcune foto, hanno avuto riduzioni anche del 50%!<\/p>\n<h1 style=\"text-align: justify;\">MINimizza e comprimi i tuoi Javascript ed i file CSS<\/h1>\n<p style=\"text-align: justify;\">Alcuni plugin js come Jquery, o alcuni fogli di stile molto complessi, possono contenere svariati commenti, che aiutano gli utenti a capire nel dettaglio cosa faccia questa o quella riga di codice. Purtroppo, questi commenti, assieme agli spazi ed agli &#8220;a capo&#8221;, occupano spazio. Il browser \u00e8 costretto a&#8230; fare lo slalom fra queste parti che risultano utili solo ad un occhio umano.<\/p>\n<p style=\"text-align: justify;\">Ci viene in aiuto <a title=\"Google minify\" href=\"http:\/\/code.google.com\/p\/minify\/downloads\/list\">Google Minify<\/a>, che elimina tutte le parti inutili di questi file, consentendo di risparmiare parecchi Kilobyte.<br \/>\nScaricatelo, caricate la cartella &#8220;min&#8221; nel vostro sito, ed aprite la pagina indirizzo_vostro_sito\/min\/builder.<br \/>\nInserite i vari CSS (o JS) da comprimere, cliccate su UPDATE, e Minify vi indicher\u00e0 una tag HTML bella e pronta all&#8217;uso, da inserire nelle vostre pagine web al posto dei soliti (e numerosi)<\/p>\n<blockquote><p>&lt;link type=&#8221;text\/css&#8221; rel=&#8221;stylesheet&#8221; href=[&#8230;..] \/&gt;<br \/>\n&lt;script type=&#8221;text\/javascript&#8221; src=&#8221;&#8230;&#8221;&gt;&lt;\/script&gt;<\/p><\/blockquote>\n<p style=\"text-align: justify;\">In questo modo, farete UNA SOLA chiamata per i fogli di stile, ed UNA SOLA chiamata per i javascript.<\/p>\n<h1 style=\"text-align: justify;\">Posizionate i Javascript nel footer<\/h1>\n<p style=\"text-align: justify;\">Alcuni codici (come queli dei contatori), se non sono &#8220;asincroni&#8221;, possono creare per un qualsiasi motivo un ritardo nel caricamento. Se si trovano nell&#8217;header (quindi all&#8217;inizio del sito), questi blocchi influenzeranno anche il resto della pagina, che dovr\u00e0 aspettare la risoluzione di eventuali problemi, prima di essere caricata.<\/p>\n<p style=\"text-align: justify;\">Se inserite i javascript nel footer (ovvero alla fine del sito), eventuali problemi di caricamento non comporteranno una noia per gli utenti.<\/p>\n<h1 style=\"text-align: justify;\">Specificate l&#8217;encoding dei caratteri SOLO a livello di web server<\/h1>\n<p style=\"text-align: justify;\">Se utilizzate Apache, potete eliminare le tag html relative all&#8217;encoding nelle vostre pagine, ed inserire direttamente nel file .htaccess:<\/p>\n<blockquote><p>AddDefaultCharset UTF-8<\/p><\/blockquote>\n<h1 style=\"text-align: justify;\">Abilitate la cache<\/h1>\n<p style=\"text-align: justify;\">In questo modo gli utenti che TORNANO nel vostro sito, potranno sfruttare la cache del loro browser, senza essere costretti a ricaricare di nuovo sfondo, js, css e cos\u00ec via.<br \/>\nSempre in .htaccess:<\/p>\n<blockquote><p>&lt;IfModule mod_headers.c&gt;<br \/>\n&lt;FilesMatch &#8220;\\.(js|css)$&#8221;&gt;<br \/>\nHeader append Vary Accept-Encoding<br \/>\nCache-Control: Private<br \/>\n&lt;\/FilesMatch&gt;<br \/>\n&lt;\/IfModule&gt;<\/p>\n<p>#include caching for images<br \/>\n&lt;IfModule mod_expires.c&gt;<br \/>\nExpiresActive On<br \/>\nExpiresByType image\/gif &#8220;access plus 1 week&#8221;<br \/>\nExpiresByType image\/jpg &#8220;access plus 1 week&#8221;<br \/>\nExpiresByType image\/png &#8220;access plus 1 week&#8221;<br \/>\nExpiresByType image\/x-icon &#8220;access plus 360 days&#8221;<br \/>\nExpiresByType text\/css &#8220;access plus 1 day&#8221;<br \/>\nExpiresByType text\/html &#8220;access plus 1 week&#8221;<br \/>\nExpiresByType text\/javascript &#8220;access plus 1 week&#8221;<br \/>\nExpiresByType text\/x-javascript &#8220;access plus 1 week&#8221;<br \/>\nExpiresByType application\/javascript &#8220;access plus 1 week&#8221;<br \/>\nExpiresByType application\/x-javascript &#8220;access plus 1 week&#8221;<br \/>\nExpiresByType application\/x-shockwave-flash &#8220;access plus 1 week&#8221;<br \/>\nExpiresByType font\/truetype &#8220;access plus 1 month&#8221;<br \/>\nExpiresByType font\/opentype &#8220;access plus 1 month&#8221;<br \/>\nExpiresByType application\/x-font-otf &#8220;access plus 1 month&#8221;<br \/>\n&lt;\/IfModule&gt;<\/p><\/blockquote>\n<h1 style=\"text-align: justify;\">Abilitate la compressione GZIP<\/h1>\n<p style=\"text-align: justify;\">Esistono vari metodi, a seconda che si usi Apache o altri webserver, ed il metodo \u00e8 spiegato diffusamente in altri siti, quindi non \u00e8 necessario ricopiare il codice anche in questo articolo.<\/p>\n<h1 style=\"text-align: justify;\">Create una versione mobile del sito<\/h1>\n<p style=\"text-align: justify;\">Aggiungete, nel vostro foglio di stile, delle correzioni che permetteranno di visualizzare il vostro sito su iPhone, iPad, Android e terminali simili:<\/p>\n<blockquote><p>@media only screen and (min-device-width : 320px) and (max-device-width : 480px), only screen and (min-device-width : 480px) and (max-device-width : 800px) and (orientation : landscape), only screen and (device-width: 768px), only screen and (-webkit-min-device-pixel-ratio : 1.5), only screen and (min-device-pixel-ratio : 1.5), only screen and (-moz-min-device-pixel-ratio: 1.5)<br \/>\n{ <strong>CODICE CSS MOBILE QUI<\/strong> }<\/p><\/blockquote>\n<p style=\"text-align: justify;\">Per esempio, potreste ridurre la dimensione dei div, eliminare l&#8217;immagine di sfondo, eventuali sottomen\u00f9 non adatti a schermi piccoli, e cos\u00ec via. <strong>In questo modo, il tempo di caricamento sui dispositivi mobile potr\u00e0 essere drasticamente diminuito.<\/strong><br \/>\nA titolo di esempio, ecco due screenshoot che mostrano la versione mobile di questo sito su Android ed iPhone: <a href=\"https:\/\/www.flapane.com\/blog\/wp-content\/uploads\/2012\/06\/android1.png\" rel=\"lightbox[1046]\">immagine1<\/a> \/ <a href=\"https:\/\/www.flapane.com\/blog\/wp-content\/uploads\/2012\/06\/iphone1.png\" rel=\"lightbox[1046]\">immagine2<\/a><\/p>\n<p style=\"text-align: justify;\">Una volta effettuati questi cambiamenti, aggiungete queste TAG html nell&#8217;header, prima del caricamento del foglio di stile:<\/p>\n<blockquote>\n<p style=\"text-align: justify;\">&lt;meta name=&#8221;viewport&#8221; content=&#8221;width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no&#8221;\/&gt;<br \/>\n&lt;meta name=&#8221;apple-mobile-web-app-capable&#8221; content=&#8221;yes&#8221;\/&gt;<br \/>\n&lt;meta name=&#8221;apple-mobile-web-app-status-bar-style&#8221; content=&#8221;black-translucent&#8221;\/&gt;<\/p>\n<\/blockquote>\n<p style=\"text-align: justify;\">Nell&#8217;ordine, impostano il livello di zoom per i terminali mobili, e vieta all&#8217;utente di zoomare (eventualmente rompendo il layout). Le ultime due tag sono specifiche per iOS, e rendono il vostro sito pi\u00f9 simile ad una App, nascondendo la barra degli indirizzi di Safari.<\/p>\n<h1 style=\"text-align: justify;\">BONUS: WordPress: ottimizzare automaticamente tutte le immagini JPG e PNG<\/h1>\n<p style=\"text-align: justify;\">Il plugin <a href=\"http:\/\/wordpress.org\/extend\/plugins\/wp-smushit\/\">SMUSH-IT<\/a> permette di fare, automaticamente, quello che ho descritto poco sopra per le pagine statiche, ovvero effettuare una &#8220;lossless compression&#8221; delle immagini, migliorando il tempo di caricamento del vostro blog WordPress.<\/p>\n<p style=\"text-align: justify;\"><strong>E&#8217;tutto!<\/strong> <strong>Notare che queste correzioni aiutano ad ottenere punteggi fra l&#8217;85 ed il 95 nei test Google Page Speed ed YSlow<\/strong>, con conseguenti miglioramenti generali in ottica posizionamento.<\/p>\n<p style=\"text-align: justify;\">E tu hai qualche altro trucco da suggerire? Si accetta di tutto! \ud83d\ude42<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Google Webmaster Tools possiede una interessante funzione (nella sezione FUNZIONI SPERIMENTALI -> PRESTAZIONI DEL SITO), che permette di monitorare il tempo di caricamento del vostro sito web.<br \/>\nCome ci mostra questo grafico di KissMetrics, la percentuale di utenti che decidono di abbandonare il vostro sito, prima che questo abbia finito il caricamento, aumenta drasticamente col passare dei secondi.[&#8230;]<\/p>\n","protected":false},"author":1,"featured_media":1047,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[7],"tags":[195,11,174,165,200,108,44,9,109,213,116],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.flapane.com\/blog\/wp-json\/wp\/v2\/posts\/1046"}],"collection":[{"href":"https:\/\/www.flapane.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.flapane.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.flapane.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.flapane.com\/blog\/wp-json\/wp\/v2\/comments?post=1046"}],"version-history":[{"count":0,"href":"https:\/\/www.flapane.com\/blog\/wp-json\/wp\/v2\/posts\/1046\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.flapane.com\/blog\/wp-json\/wp\/v2\/media\/1047"}],"wp:attachment":[{"href":"https:\/\/www.flapane.com\/blog\/wp-json\/wp\/v2\/media?parent=1046"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.flapane.com\/blog\/wp-json\/wp\/v2\/categories?post=1046"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.flapane.com\/blog\/wp-json\/wp\/v2\/tags?post=1046"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}