{"id":8291,"date":"2011-02-23T18:29:42","date_gmt":"2011-02-23T17:29:42","guid":{"rendered":"https:\/\/www.dreamsworld.it\/emanuele\/?p=8291"},"modified":"2016-05-17T18:02:11","modified_gmt":"2016-05-17T16:02:11","slug":"come-velocizzare-il-tuo-blog-in-5-mosse","status":"publish","type":"post","link":"https:\/\/www.dreamsworld.it\/emanuele\/2011-02-23\/come-velocizzare-il-tuo-blog-in-5-mosse\/","title":{"rendered":"Come velocizzare il tuo blog in 5 mosse!"},"content":{"rendered":"<p>Siccome <del datetime=\"2011-02-22T21:30:35+00:00\">son paranoico<\/del> questo blog \u00e8 <strong>un tavolo degli esperimenti<\/strong>, da qualche giorno queste pagine si aprono pi\u00f9 velocemente <em>che mai<\/em>. Per la precisione la prima apertura ha guadagnato mezzo secondo mentre un qualsiasi reload sucessivo della pagina si \u00e8 dimezzato: da poco pi\u00f9 di tre secondi a <strong>circa un secondo e mezzo<\/strong>.<\/p>\n<p>Come ho fatto? <strong>Vuoi velocizzare anche le tue pagine?<\/strong><\/p>\n<p>I passi necessari sono:<\/p>\n<ol>\n<li><strong>Riunisci in un unico file i css e javascript presenti nelle pagine<\/strong>: se controlli <em>sotto la gonna<\/em> di questo blog vedrai che non vi sono pi\u00f9 differenti css o javascript sparsi, oltre quelli caricati da domini esterni (<em>ad esempio Google Analytics<\/em>). Il motivo \u00e8 semplice: il tuo browser scarica queste pagine &#8220;<em>due pezzi per volta&#8221;<\/em>, cos\u00ec se diminuisci il numero di file da recuperare, diminuisci il tempo di caricamento totale della pagina.<\/li>\n<li><strong>Minimizza qualsiasi cosa possibile<\/strong>: javascript e css sicuramente possono esser sostituiti dalla loro versione compressa, cui son stati rimossi spazi e commenti ed han ricevuto un paio di ottimizzazioni. Per comprimerli ho usato <a href=\"http:\/\/jscompress.com\/\" title=\"JSCompress\" target=\"_blank\">JSCompress<\/a> per i javascript e <a href=\"https:\/\/cssminifier.com\/\" title=\"MinifyCSS\" target=\"_blank\">MinifyCSS<\/a> per i fogli di stile. Il risparmio si quantifica in quasi 100kb in meno (<em>moltiplicali per il numero di visitatori e conta il risparmio giornaliero<\/em>). Ovviamente se hai immagini non ottimizzate puoi intervenire anche l\u00ec: non mettere online una foto a 2500&#215;2500 se poi la visualizzi in un&#8217;area della pagina limitata a 300&#215;400!<\/li>\n<li><strong>Richiama dall&#8217;esterno i javascript comuni:<\/strong> framework come <a href=\"https:\/\/it.wikipedia.org\/wiki\/JQuery\" title=\"Wikipedia - JQuery\" target=\"_blank\">jQuery<\/a> o <a href=\"https:\/\/it.wikipedia.org\/wiki\/Prototype_JavaScript_Framework\" title=\"Wikipedia - Prototype JavaScript Framework\" target=\"_blank\">prototype<\/a> (se li usi), puoi richiamarli attraverso la loro versione (<em>minificata<\/em>) <a href=\"https:\/\/developers.google.com\/speed\/libraries\/\" title=\"Google - Libraries API\" target=\"_blank\">fornita da Google<\/a>, questo alleggerisce il carico sul tuo server, parallelizza il download della pagina e molto probabilmente un visitatore avr\u00e0 gi\u00e0 scaricato il file navigando altrove.<\/li>\n<li><strong>Imposta correttamente l&#8217;expire dei file<\/strong>. E&#8217; inutile ricaricare le immagini che, su un blog, molto probabilmente non cambieranno mai: quando pubblico qualcosa \u00e8 perch\u00e9 voglio rimanga l\u00ec. E allora ecco i codici da inserire <a href=\"https:\/\/it.wikipedia.org\/wiki\/.htaccess\" title=\" Wikipedia - .htaccess\" target=\"_blank\">nel file .htaccess<\/a> del tuo blog:<\/li>\n<pre lang=\"apache\" line=\"1\">\r\n# Abilita l'expire dei contenuti\r\n&lt;ifmodule mod_expires.c&gt;\r\nExpiresActive On\r\n# 1 anno per gli mp3, i video e i contenuti multimediali\r\n&lt;filesmatch &quot;\\.(flv|ico|pdf|avi|mov|ppt|doc|mp3|wmv|wav)$&quot;&gt;\r\nExpiresDefault A9030400\r\n&lt;\/filesmatch&gt;\r\n# 1 mese per le immagini e i fogli di stile\r\n&lt;filesmatch &quot;\\.(jpg|jpeg|png|gif|swf|css)$&quot;&gt;\r\nExpiresDefault A2592000\r\n&lt;\/filesmatch&gt;\r\n# 7 giorni per i javascript\r\nExpiresByType application\/x-javascript \"access plus 7 days\"\r\n&lt;\/ifmodule&gt;\r\n<\/pre>\n<li><strong>Rimuovi l&#8217;header ETag per ogni file<\/strong>. Questa te la spiego cos\u00ec: il browser ad ogni connessione interroga il server e controlla che ci\u00f2 che gi\u00e0 conosce (<em>per via di una visita precedente<\/em>) non sia cambiato. <a href=\"https:\/\/en.wikipedia.org\/wiki\/HTTP_ETag\" title=\"Wikipedia - HTTP ETag (inglese)\" target=\"_blank\">L&#8217;ETag<\/a> \u00e8 un codice univoco usato per il confronto. Perch\u00e9 rimuoverlo? Perch\u00e9 senza esso il browser fa totale affidamento su quanto gli hai detto sopra con l&#8217;expire dei file: una volta al mese aggiorna le immagini, per il resto non fa alcun controllo e si fida che sia rimasto tutto uguale. Ecco cos&#8217;altro inserire.<\/li>\n<pre lang=\"apache\" line=\"1\">\r\n# Rimuove il tag ETag dall'header per tutti i file\r\n&lt;ifmodule mod_headers.c&gt;\r\nHeader unset ETag\r\nFileETag None\r\n&lt;\/ifmodule&gt;\r\n<\/pre>\n<li><strong>Si pu\u00f2 fare di pi\u00f9<\/strong> (<em>si pu\u00f2 sempre fare di pi\u00f9!<\/em>). Il prossimo passo sar\u00e0 utilizzare i <a href=\"https:\/\/www.google.it\/search?q=css+sprites\" title=\"Google Ricerca: CSS Sprites\" target=\"_blank\">CSS Sprites<\/a> per riunire le immagini statiche (<em>non quelle dei post<\/em>). Il motivo \u00e8 \u00a0lo stesso del punto uno&#8230; ma lascio a te il compito di approfondire l&#8217;argomento! \ud83d\ude42<\/li>\n<\/ol>\n<p><strong>Hai altri consigli?<\/strong><\/p>\n<p><strong>Emanuele<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Siccome son paranoico questo blog \u00e8 un tavolo degli esperimenti, da qualche giorno queste pagine si aprono pi\u00f9 velocemente che mai. Per la precisione la prima apertura ha guadagnato mezzo secondo mentre un qualsiasi reload sucessivo della pagina si \u00e8 &hellip; <a href=\"https:\/\/www.dreamsworld.it\/emanuele\/2011-02-23\/come-velocizzare-il-tuo-blog-in-5-mosse\/\">Leggi ancora &rarr;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":4,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"","footnotes":""},"categories":[4],"tags":[726,302,542,84,483,724,936,776,653,640,485,497,753,752,2040,754,773,321,966,356,529,526,455,23,528,493],"class_list":["post-8291","post","type-post","status-publish","format-standard","hentry","category-internet","tag-benchmark","tag-blog","tag-blog-design","tag-browser","tag-css","tag-dom","tag-dominio","tag-google","tag-guide","tag-how-to","tag-html","tag-javascript","tag-jquery","tag-mootools","tag-perfezione","tag-prototype","tag-risorse","tag-risparmio","tag-server","tag-servizi-web","tag-siti-web","tag-user-experience","tag-velocita","tag-web","tag-web-design","tag-wordpress"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.dreamsworld.it\/emanuele\/wp-json\/wp\/v2\/posts\/8291","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dreamsworld.it\/emanuele\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dreamsworld.it\/emanuele\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dreamsworld.it\/emanuele\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dreamsworld.it\/emanuele\/wp-json\/wp\/v2\/comments?post=8291"}],"version-history":[{"count":0,"href":"https:\/\/www.dreamsworld.it\/emanuele\/wp-json\/wp\/v2\/posts\/8291\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.dreamsworld.it\/emanuele\/wp-json\/wp\/v2\/media?parent=8291"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dreamsworld.it\/emanuele\/wp-json\/wp\/v2\/categories?post=8291"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dreamsworld.it\/emanuele\/wp-json\/wp\/v2\/tags?post=8291"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}