La optimización web o Web Performance Optimization (WPO) cada vez es más importante y surgen muchas dudas entorno a este tema. Para despejarlas el 24 de mayo de 2017 organizamos un desayuno técnico con Fernando Tellado, uno de los mayores expertos en WordPress, creación web y marketing digital de España, sobre “La optimización web (WPO) es el nuevo SEO”.
Podéis ver el vídeo en nuestro canal de YouTube https://youtu.be/NJjxFkjim_0, los códigos de Fernando para aplicarlos en vuestro proyecto web los encontraréis en nuestro blog https://www.siteground.es/blog/desayuno-tecnico-wpo-seo y los comentarios en Twitter con #DesayunoSiteGround.
¡Algunos asistentes ya han aplicado los consejos de Fernando con gran éxito! ¡Consigue tú también una web más rápida, con mejor posicionamiento SEO, con las últimas tecnologías y mejor experiencia de usuario!
3. ¿Por qué hacer WPO?
@SiteGroundES
! Google rastrea más rápido las
webs rápidas
! Google premia las webs rápidas
! Reduces la tasa de rebote
! Tus usuarios te lo agradecerán
(o te abandonarán)
#DesayunoSiteGround
www.siteground.es@fernandot
AyudaWP
8. @SiteGroundESwww.siteground.es
! Una web rápida
! Una web fácil de navegar
! Una web para móviles
! Uso eficaz de los recursos
#DesayunoSiteGround
Qué es optimización web (WPO)
@fernandot
AyudaWP
9. Qué NO es optimización web (WPO)
@SiteGroundES
! 100 en Google PageSpeed
! Una web inútil
! Una web responsive
! Una web sin recursos
#DesayunoSiteGround
www.siteground.es@fernandot
AyudaWP
40. @SiteGroundES
#DesayunoSiteGround
www.siteground.es
Internet 2.0 = HTTP/2
Binario y no textual
Multiplexado: varias peticiones paralelas en la misma conexión TCP=
menos tiempo y menos peticiones únicas = menos tiempos de espera
Usa compresión de cabeceras HTTP
Los servidores pueden hacer peticiones “push” proactivas a la cache
de los navegadores en vez de esperar cada petición
Conexiones encriptadas
Optimiza nuestra web sin tener que optimizarla
@fernandot
AyudaWP
55. @SiteGroundES
#DesayunoSiteGround
www.siteground.es
CDN ¿cuál?
CloudFlare: fácil de configurar, gratis y preconfigurado con todos los
planes de SiteGround
Amazon CloudFront: subdominios, solo para expertos, caro
KeyCDN: muchos servidores, subdominios, fácil de configurar, asequible
Photon: hosted, dominios, pésimo para SEO de imágenes
@fernandot
AyudaWP
83. @SiteGroundES
#DesayunoSiteGround
www.siteground.es
Gestión de recursos
@fernandot
AyudaWP
Desactiva todo lo innecesario
<?php language_attributes(); ?> en header.php.
<?php bloginfo(‘html_type’); ?> en header.php.
<?php bloginfo(‘charset’); ?> en header.php.
<?php bloginfo(‘name’); ?> Sustituir por nombre del sitio.
<meta name=”generator” content=”WordPress <?php
bloginfo(‘version’); ?>” /> en header.php.
<?php bloginfo(‘stylesheet_url’); ?> Sustituir por ruta absoluta.
<?php bloginfo(‘rss2_url’); ?> Sustituir por la URL de tu feed.
<?php bloginfo(‘pingback_url’); ?> en header.php.
<?php bloginfo(‘stylesheet_directory’); ?> Sustituir por ruta absoluta.
<?php bloginfo(‘description’); ?> Sustituir por descripción del sitio.
<?php bloginfo(‘comments_rss2_url’); ?> en sidebar.php y footer.php.
<!– <?php echo get_num_queries(); ?> queries. <?php timer_stop(1); ?>
seconds. –> en footer.php.
91. @SiteGroundES
#DesayunoSiteGround
www.siteground.es
Gestión de recursos
@fernandot
AyudaWP
Desactiva todo lo innecesario
//Cargar disqus solo donde es necesario
add_action( 'wp_head', 'tgm_tame_disqus_comments' );
function tgm_tame_disqus_comments() {
//Si estás visitando una entrada o página con los comentarios abiertos es necesario el
código
if ( is_singular( array( 'post', 'page' ) ) && comments_open() )
return;
/** Y se frena a Disqus donde no estén abiertos los comentarios */
remove_action( 'loop_end', 'dsq_loop_end' );
remove_action( 'wp_footer', 'dsq_output_footer_comment_js' );
}
FUNCTIONS.PHP
96. @SiteGroundES
#DesayunoSiteGround
www.siteground.es
Gestión de recursos
@fernandot
AyudaWP
Optimiza todo
// Aplazar JavaScripts
// Aplaza la carga de jQuery usando la propiedad HTML5 defer
if (!(is_admin() )) {
function defer_parsing_of_js ( $url ) {
if ( FALSE === strpos( $url, '.js' ) ) return $url;
if ( strpos( $url, 'jquery.js' ) ) return $url;
// return "$url' defer ";
return "$url' defer onload='";
}
add_filter( 'clean_url', 'defer_parsing_of_js', 11, 1 );
}
FUNCTIONS.PHP
97. @SiteGroundES
#DesayunoSiteGround
www.siteground.es
Gestión de recursos
@fernandot
AyudaWP
Optimiza todo
if(!is_admin()) {
// Mover todo el JS de la cabecera (header) al pié (footer)
remove_action('wp_head', 'wp_print_scripts');
remove_action('wp_head', 'wp_print_head_scripts', 9);
remove_action('wp_head', 'wp_enqueue_scripts', 1);
add_action('wp_footer', 'wp_print_scripts', 5);
add_action('wp_footer', 'wp_enqueue_scripts', 5);
add_action('wp_footer', 'wp_print_head_scripts', 5);
}
FUNCTIONS.PHP
98. @SiteGroundES
#DesayunoSiteGround
www.siteground.es
Gestión de recursos
@fernandot
AyudaWP
Optimiza todo
#Habilitar Keep-alive
<IfModule mod_headers.c>
Header set Connection keep-alive
# Number of requests to allow during a persistent connection
MaxKeepAliveRequests 60
# Number of seconds to wait for the next request from the # same client on
the same connection
KeepAliveTimeout 15
</IfModule>
.HTACCESS