Influenza degli include nel posizionamento

Oramai è quasi un appuntamento fisso, non passa settimana sul forum di HTML.it senza che qualcuno, noncurante del motore di ricerca interno, apra un thread con la fatidica domanda: se uso gli include il sito verrà penalizzato?
Beh, ovviamente la domanda può variare nelle sfumature, ma il concetto finale è sempre lo stesso.

In questo intervento cercherò di riassumere alcune delle situazioni principali relative alla gestione degli include e le rispettive ripercussioni sui motori di ricerca.
Prima di procedere, è doverosa qualche premessa.

  1. Gli algoritmi dei motori di ricerca sono in continua evoluzione. Quanto pubblicato oggi può non valere domani. Questo non è un modo per scaricare le proprie responsabilità, ma la effettiva situazione reale.
  2. Quanto scritto in seguito non è legge. E' il risultato consolidato di test e verifiche, convalidato da milioni di post che rispondono sempre la stessa cosa alla solita domanda.

Bene, scaricate le mie responsabilità... ehm, volevo dire, chiarite le premesse, entriamo nel vivo dell'argomento.

Innanzi tutto chiariamo che cosa sono gli include. Con include si intende un'inclusione di codice, ovvero una porzione di script e dati che si trovano su un file differente da quello in esecuzione e che viene richiamato durante la fase di elaborazione.
Non è scopo di questa pubblicazione trattare i vantaggi di un include, ad ogni modo si può dire che è una soluzione largamente diffusa per evitare di ripetere più volte stesse porzioni di codice in situazioni differenti, ottimizzano così la struttura del sorgente.

Esistono due tipo di inclusioni: lato server e lato client.
Questo è un passaggio fondamentale quindi vi suggerisco di seguire attentamente quanto scritto.
La differnza fondamentale tra i due tipi sta nel momento in cui le inclusioni vengono caricate ed elaborate e, in particolare, nel risultato dell'output prodotto.

Le inclusioni lato server avvengono, ovviamente, in fase di elaborazione da parte del server.
Questo significa che il server provvedere a caricare tutti i file da includere, fonderli con il sorgente della pagina di inclusione ed elaborare l'intero codice una volta sola. Questa operazione avviene prima di ogni qualsiasi output ed al client finale, browser, motore di ricerca o qualsiasi altro, viene restituita la pagina completa senza che lui si accorga di nulla.
Cambia poco se il sorgente è spalmato su centinaia di file o in uno unico, il risultato finale è sempre e comunque una pagina comune a tutti i tipi di client e riconducibile "ad un pezzo unico".

Le inclusioni lato server sono proprie di linguaggi lato server come ASP, PERL, PHP e ColdFusion.
Esiste poi la possibilità di inserire direttive di server side inclusion anche in pagine con puro linguaggio statico, ammesso che il server sia in grado di elaborare le direttive e l'estensione del file sia compatibile con quelle mappate per l'interpretazione. E' questo il caso delle estensioni shtml e phtml.

Sbrigandocela in poche parole, con una inclusione lato server non ci dovremo preoccupare di problemi di visibilità sui motori di ricerca, o meglio, se ci saranno non sarà questa la causa.

Esempi di inclusioni lato server:

<!-- #include file="NOMEFILE" --> (ASP)
<!-- #include virtual="/NOMEFILE" --> (ASP)
include("NOMEFILE"); (PHP)
include_once("NOMEFILE"); (PHP)
require("NOMEFILE"); (PHP)
#include NOMEFILE (PERL)
<include "NOMEFILE"> (PERL)

Il discorso cambia nel caso di inclusioni lato client.
In questo caso il compito di interpretare l'inclusione è affidata al programma che riceverà la pagina. La situazione sarà quindi tanto più problematica quanto meno il client è in grado di interpretare elaborare le direttive.

Nel caso di un browser, oggigiorno, difficilmente si riscontrano gravi problemi di incompatibilità.
Nel caso degli spider dei motori di ricerca la situazione è differente in quanto la maggior parte, volutamente, non è in grado di comprendere direttive di inclusione lato client. Il risultato è che tutto quello che è caricato esternamente non sarà letto.

Il più diffuso linguaggio per l'inclusione lato client è JavaScript.
La capacità dei motori di elaborare JavaScript è argomento di discussione da diverso periodo. Allo stato attuale pochi motori sono in grado di comprenderlo, la maggior parte dei quali solo allo scopo di individuare tentativi di posizionamento poco regolamentari.

Concludendo, in termini spiccioli: inclusioni lato server OK, inclusioni lato client KO.