AJAX & SEO: Le migliori soluzioni

55
Giorgio Taverniti – Founder GT Idea - #convegnogt Andrea Cardinale Founder Web and Tech AJAX & SEO LE MIGLIORI SOLUZIONI ATTUALI! @CardinaleAndrea +AndreaCardinale

description

Fin dagli inizi, AJAX ha creato non poche problematiche ai SEO. L'intervento illustrerà le migliori soluzioni ideate in questi anni per non avere alcune tipo di problema SEO con AJAX.

Transcript of AJAX & SEO: Le migliori soluzioni

Page 1: AJAX & SEO: Le migliori soluzioni

Giorgio Taverniti – Founder GT Idea - #convegnogt

Andrea CardinaleFounder Web and Tech

AJAX & SEOLE MIGLIORI SOLUZIONI ATTUALI!

@CardinaleAndrea+AndreaCardinale

Page 2: AJAX & SEO: Le migliori soluzioni

Andrea Cardinale

www.andrea-cardinale.it

@CardinaleAndrea

+AndreaCardinale

www.webandtech.it

Andrea Cardinale – Founder Web and Tech - #convegnogt

Page 3: AJAX & SEO: Le migliori soluzioni

Un po' di storia

Asynchronous JavaScript and XML

Venne denominata Ajax

per la prima volta

nel 2005 da Jesse Garrett

in un articolo del suo blog

Venne denominata Ajax

per la prima volta

nel 2005 da Jesse Garrett

in un articolo del suo blog

Andrea Cardinale – Founder Web and Tech - #convegnogt

Page 4: AJAX & SEO: Le migliori soluzioni

Un po' di preistoria

Andrea Cardinale – Founder Web and Tech - #convegnogt

Page 5: AJAX & SEO: Le migliori soluzioni

Cosa consiste

Scambio di dati in backgroundfra browser ed il server

RichiestaAJAX

PAGINA WEBPAGINA WEBSERVERSERVER

Aggiornamentocontenuto

Andrea Cardinale – Founder Web and Tech - #convegnogt

Page 6: AJAX & SEO: Le migliori soluzioni

Perché utilizzarlo ?

Asincronismo

Velocità d'interazione

Migliora l'esperienza utente

Andrea Cardinale – Founder Web and Tech - #convegnogt

Page 7: AJAX & SEO: Le migliori soluzioni

Perché ne parlo ?

Andrea Cardinale – Founder Web and Tech - #convegnogt

Page 8: AJAX & SEO: Le migliori soluzioni

Uno sguardo al web

Andrea Cardinale – Founder Web and Tech - #convegnogt

Page 9: AJAX & SEO: Le migliori soluzioni

Ajax vs SEO (Uno sguardo al web)

Andrea Cardinale – Founder Web and Tech - #convegnogt

Page 10: AJAX & SEO: Le migliori soluzioni

Terzo incomodo (Uno sguardo al web)

Andrea Cardinale – Founder Web and Tech - #convegnogt

Page 11: AJAX & SEO: Le migliori soluzioni

Assassin's Ajax IV (Uno sguardo al web)

Andrea Cardinale – Founder Web and Tech - #convegnogt

Page 12: AJAX & SEO: Le migliori soluzioni

Indicizzazione (Uno sguardo al web)

“ Ajax può rendere difficoltosal’indicizzazione del sito

da parte dei motori di ricerca ”

Andrea Cardinale – Founder Web and Tech - #convegnogt

Page 13: AJAX & SEO: Le migliori soluzioni

Accessibilità (Uno sguardo al web)

“ Ajax può ostacolare l’accessibilitàdei contenuti e del sito ”

Andrea Cardinale – Founder Web and Tech - #convegnogt

Page 14: AJAX & SEO: Le migliori soluzioni

Disorientamento (Uno sguardo al web)

“ Ajax può disorientare l’utente:non interagisce con i bottoniavanti e indietro del browser ”

Andrea Cardinale – Founder Web and Tech - #convegnogt

Page 15: AJAX & SEO: Le migliori soluzioni

Le vostre esperienze?

Andrea Cardinale – Founder Web and Tech - #convegnogt

Page 16: AJAX & SEO: Le migliori soluzioni

Andrea Cardinale – Founder Web and Tech - #convegnogt

Page 17: AJAX & SEO: Le migliori soluzioni

Un mio dogma

Andrea Cardinale – Founder Web and Tech - #convegnogt

"Cominciate col fare ciò che è necessario, poi ciò che è possibile.

E all'improvviso vi sorprenderetea fare l'impossibile"

San Francesco d'Assisi

"Cominciate col fare ciò che è necessario, poi ciò che è possibile.

E all'improvviso vi sorprenderetea fare l'impossibile"

San Francesco d'Assisi

Page 18: AJAX & SEO: Le migliori soluzioni

Il problema

Andrea Cardinale – Founder Web and Tech - #convegnogt

Perché nasce?

Page 19: AJAX & SEO: Le migliori soluzioni

La colpa

Sviluppatore smanettone

Andrea Cardinale – Founder Web and Tech - #convegnogt

Page 20: AJAX & SEO: Le migliori soluzioni

Il problema

<a href=”/buon-vecchio-url/”>Label</a>

<a href=”javascript:SuperFigata();”>Label</a>

Andrea Cardinale – Founder Web and Tech - #convegnogt

Page 21: AJAX & SEO: Le migliori soluzioni

Il problema

<a href=”/buon-vecchio-url/”>Label</a>

<a href=”#SuperFigata” onclick=”javascript:SuperFigata();”>Label</a>

Andrea Cardinale – Founder Web and Tech - #convegnogt

Page 22: AJAX & SEO: Le migliori soluzioni

Risultato

Il Link non contiene più una URL

I tasti (avanti e indietro) del browser non funzionanocome dovrebbero

Senza javascript non funziona una cippa

Il Crawler... inutile dirlo!

Andrea Cardinale – Founder Web and Tech - #convegnogt

Page 23: AJAX & SEO: Le migliori soluzioni

Houston,abbiamo

un problema!

Andrea Cardinale – Founder Web and Tech - #convegnogt

Page 24: AJAX & SEO: Le migliori soluzioni

Il concetto

Tecnologie come AJAX

devono rappresentare una miglioria,

non sostituire o eliminare funzioni basilari

Tecnologie come AJAX

devono rappresentare una miglioria,

non sostituire o eliminare funzioni basilari

Andrea Cardinale – Founder Web and Tech - #convegnogt

Page 25: AJAX & SEO: Le migliori soluzioni

Soluzioni

Andrea Cardinale – Founder Web and Tech - #convegnogt

Page 26: AJAX & SEO: Le migliori soluzioni

Google

Making AJAX Applications Crawlable

https://developers.google.com/webmasters/ajax-crawling/

Andrea Cardinale – Founder Web and Tech - #convegnogt

Page 27: AJAX & SEO: Le migliori soluzioni

GoogleAnziché utilizzare #

Si utilizza #!Indichiamo che utilizziamo l' AJAX crawling scheme

Il crawler richiede al server il contenuto del seguente URL

www.example.com/ajax.html#key=value

www.example.com/ajax.html#!key=value

www.example.com/ajax.html?_escaped_fragment_=key=value

Andrea Cardinale – Founder Web and Tech - #convegnogt

Page 28: AJAX & SEO: Le migliori soluzioni

Google

Server side

Esempio PHP:

if(isset($_GET['_escaped_fragment_'])){

$escaped = explode("=", $_GET['_escaped_fragment_']);

if(isset($escaped[1]) && in_array($escaped[1], $files)){

include ("./views/".$escaped[1].".php");

}

}

Esempio PHP:

if(isset($_GET['_escaped_fragment_'])){

$escaped = explode("=", $_GET['_escaped_fragment_']);

if(isset($escaped[1]) && in_array($escaped[1], $files)){

include ("./views/".$escaped[1].".php");

}

}

Andrea Cardinale – Founder Web and Tech - #convegnogt

Page 29: AJAX & SEO: Le migliori soluzioni

Google

Making AJAX Applications Crawlable

Andrea Cardinale – Founder Web and Tech - #convegnogt

Page 30: AJAX & SEO: Le migliori soluzioni

Bing

Making AJAX Applications Crawlable

https://developers.google.com/webmasters/ajax-crawling/

Andrea Cardinale – Founder Web and Tech - #convegnogt

Page 31: AJAX & SEO: Le migliori soluzioni

Bing

Making AJAX Applications Crawlable

https://developers.google.com/webmasters/ajax-crawling/

Andrea Cardinale – Founder Web and Tech - #convegnogt

Page 32: AJAX & SEO: Le migliori soluzioni

Hijax

Progressive Enhancement with Ajax

Andrea Cardinale – Founder Web and Tech - #convegnogt

Page 33: AJAX & SEO: Le migliori soluzioni

Hijax

<a href=”/buon-vecchio-url/”>Label</a>

<a href=”javascript:SuperFigata();”>Label</a>

<a href=”/buon-vecchio-url/” class=”ajax”>Label</a>

Andrea Cardinale – Founder Web and Tech - #convegnogt

Page 34: AJAX & SEO: Le migliori soluzioni

Hijax

Andrea Cardinale – Founder Web and Tech - #convegnogt

Client side

Intercetto il click sul link con class=”ajax”

Annullo la richiesta della URL

Effettuo una chiamata ajax al server

Ricevo il contenuto dal server

Effettuo la modifica

Page 35: AJAX & SEO: Le migliori soluzioni

Hijax

Andrea Cardinale – Founder Web and Tech - #convegnogt

Server side

Ricevo la richiesta

Identifico la richiesta come Ajax

Render del contenuto senza layout

Page 36: AJAX & SEO: Le migliori soluzioni

Hijax

Andrea Cardinale – Founder Web and Tech - #convegnogt

Client side - Esempio

$( document ).ready(function() {$("a.ajax").each(function() {

var a_url = $(this).attr('href');$(this).click(function(e) {

e.preventDefault();$.ajax({

url: a_url, data: 'ajax=1', type: 'GET',}).success(function(data) {

$('#content').html(data);});

});});

});

Page 37: AJAX & SEO: Le migliori soluzioni

Hijax

Andrea Cardinale – Founder Web and Tech - #convegnogt

Server side - Esempio

if(isset($_GET['ajax'])) {//includo solo la vistarequire_once('views/'.$view.'.php');

} else {//includo tutto il layoutrequire_once('layouts/'.$layout.'.php');

}

Page 38: AJAX & SEO: Le migliori soluzioni

Rimane un problema

Andrea Cardinale – Founder Web and Tech - #convegnogt

User Experience compromessa

Page 39: AJAX & SEO: Le migliori soluzioni

URL#

Andrea Cardinale – Founder Web and Tech - #convegnogt

Client side

Modifico l'URL con #URL ( class=”ajax” )

Intercetto il cambio dell'hash

Effettuo una chiamata ajax al server all'URL chesi trova dopo #

Ricevo il contenuto dal server

Effettuo la modifica

Page 40: AJAX & SEO: Le migliori soluzioni

URL#

Andrea Cardinale – Founder Web and Tech - #convegnogt

Client side - Esempio

$( document ).ready(function() {$("a.ajax").each(function() {

var a_url = $(this).attr('href');$(this).attr('href', '#'+a_url);

});});

$(window).hashchange( function(){var a_url = window.location.hash.substr(1);$.ajax({

url: a_url, data: 'ajax=1', type: 'GET',}).success(function(data) {

$('#content').html(data);});

});

Page 41: AJAX & SEO: Le migliori soluzioni

Pjax

Andrea Cardinale – Founder Web and Tech - #convegnogt

pushState + Ajax

history.pushState(data, "Titolo", "/url-new/");

pushStatepushState

Page 42: AJAX & SEO: Le migliori soluzioni

Pjax

Andrea Cardinale – Founder Web and Tech - #convegnogt

Client side - Esempio

$( document ).ready(function() {$("a.ajax").each(function() {

var a_url = $(this).attr('href');$(this).click(function(e) {

e.preventDefault();$.ajax({

url: a_url, data: 'ajax=1', type: 'GET',}).success(function(data) {

history.pushState('', $(this).attr('title'), a_url);$('#content').html(data);

});});

});});

Page 43: AJAX & SEO: Le migliori soluzioni

Pjax

http://caniuse.com/#search=pushstate

Andrea Cardinale – Founder Web and Tech - #convegnogt

Page 44: AJAX & SEO: Le migliori soluzioni

Andrea Cardinale – Founder Web and Tech - #convegnogt

Page 45: AJAX & SEO: Le migliori soluzioni

Andrea Cardinale – Founder Web and Tech - #convegnogt

Page 46: AJAX & SEO: Le migliori soluzioni

Parallax scrolling

Andrea Cardinale – Founder Web and Tech - #convegnogt

(Uno sguardo al web)

“SEO e problemi di ottimizzazione:il parallax riduce il numero di pagine necessarie

per fornire informazioni, ciò non consente quindi diottimizzare il sito con un’ampia varietà di keywords.”

Page 47: AJAX & SEO: Le migliori soluzioni

Parallax scrolling

Andrea Cardinale – Founder Web and Tech - #convegnogt

(Uno sguardo al web)

Page 48: AJAX & SEO: Le migliori soluzioni

Andrea Cardinale – Founder Web and Tech - #convegnogt

Arrendersi?...Arrendersi?...

Page 49: AJAX & SEO: Le migliori soluzioni

Andrea Cardinale – Founder Web and Tech - #convegnogt

… o reagire?… o reagire?

Page 50: AJAX & SEO: Le migliori soluzioni

Parallax scrolling

Andrea Cardinale – Founder Web and Tech - #convegnogt

MELA PERA KIWIHOME

FRUTTA

MELA

PERA

KIWI

SCROLLING

11

22

33

44

Page 51: AJAX & SEO: Le migliori soluzioni

Parallax scrolling

Andrea Cardinale – Founder Web and Tech - #convegnogt

MELA PERA KIWIHOME

FRUTTA

Base HTML(senza javascript)

/ /mela/ /pera/ /kiwi/

URLs menu

Page 52: AJAX & SEO: Le migliori soluzioni

Parallax scrolling

Andrea Cardinale – Founder Web and Tech - #convegnogt

MELA PERA KIWIHOME

FRUTTA

MELA

PERA

KIWI

… Caricamento tramite Ajax ...

Con javascript

Page 53: AJAX & SEO: Le migliori soluzioni

Esempi

Andrea Cardinale – Founder Web and Tech - #convegnogt

www.andrea-cardinale.it/convegnogt2013/

Page 54: AJAX & SEO: Le migliori soluzioni

Links

Andrea Cardinale – Founder Web and Tech - #convegnogt

Making AJAX Applications Crawlablehttps://developers.google.com/webmasters/ajax-crawling/

jQuery hashchange eventhttp://benalman.com/projects/jquery-hashchange-plugin/

jquery-pjaxhttps://github.com/defunkt/jquery-pjax/

Ajax SEOhttps://github.com/laukstein/ajax-seo

Page 55: AJAX & SEO: Le migliori soluzioni

Giorgio Taverniti – Founder GT Idea - #convegnogt

Andrea CardinaleFounder Web and Tech

AJAX & SEOLE MIGLIORI SOLUZIONI ATTUALI!

@CardinaleAndrea+AndreaCardinale