2011-11-23 7 views
5

Sul mio sito web servo un catalogo di inventario al dettaglio. Voglio porre l'onere dell'elaborazione dei dati e rendere l'inventario sul browser client, per ridurre l'elaborazione lato server e la larghezza di banda. Voglio anche che il contenuto sia accessibile ai bot.(javascript/else/noscript iframe) per ridurre l'elaborazione del server?

sto immaginando come questo, ma mi chiedo se c'è una soluzione migliore:

1: se javascript è abilitato, processo il cliente dei dati lato

2: se javascript non è abilitata, processo lato server di dati:

<noscript> 
<iframe> 
php processing script 
</iframe> 
</noscript> 

Inoltre, si prega di confermare che l'iframe non verrà caricato se javascript è abilitato. Se il browser lo elabora comunque, allora questo sconfigge il mio obiettivo.

Infine, conferma che google bot eseguirà la scansione dell'iframe. Voglio che l'iframe sia indicizzato come parte della pagina di caricamento, non una pagina separata. L'iframe viene caricato da un dominio completamente separato, quindi sono preoccupato che google potrebbe non indicizzarlo affatto.

Grazie, Skibulk

+0

Di quanti dati stai parlando qui? Se invii 50 megabyte di dati di prodotto al client ad ogni caricamento di pagina, tutto ciò che hai fatto è fastidioso per i tuoi utenti e potenziato in maniera massiccia la tua larghezza di banda. –

+0

Nessun frammento di dati è piccolo, in genere solo un risultato di ricerca impostato da una query mysql. Questa è un'astrazione dalla situazione reale. Sarò in realtà il dominio romote, che serve ricerche di inventario a potenzialmente centinaia di negozi. Ciò potrebbe comportare un eccesso di elaborazione lato server che sto cercando di ridurre. – skibulk

risposta

1

prega di confermare che l'iframe non verrà caricato se javascript è abilitato

La decisione se visualizzare il contenuto <noscript> è preso dal browser. Ciò significa che continuerai a elaborare e scaricare il risultato del tuo "script di elaborazione php" indipendentemente dal fatto che il cliente decida di mostrarlo.

In realtà, è necessario disporre di un iframe che punta a una pagina di origine, quindi verrà caricato solo se il client decide che il blocco <noscript> deve essere visualizzato.

<noscript> 
    <iframe src="yourserverpage"></iframe> 
</noscript> 

si prega di confermare che Google bot striscerà l'iframe. Voglio che l'iframe da indicizzare come parte del caricamento della pagina, non è una pagina separata

Purtroppo questo non è possibile.

Puoi ancora avere una pagina sul tuo server che visualizza il contenuto, ma sarà indicizzata al suo indirizzo corretto, non come parte della pagina in cui incorpori l'iframe. Ad esempio, immagina che questo sia l'HTML per " PaginaA "

<noscript> 
    <iframe src="PageB"></iframe> 
</noscript> 

Il contenuto all'interno di questo iframe verrà indicizzato in Pagina B, non come parte di PageA.

Si potrebbe risolvere questo problema, in alcuni casi utilizzando il meta tag canonica:

<link rel="canonical" href="PageA"> 

Quando collocato nel <head> della pagina HTML, questo tag chiede crawler di indicizzare il contenuto sotto un indirizzo alternativo in dotazione. Di solito viene utilizzato quando lo stesso contenuto viene visualizzato su entrambe le pagine, ma si desidera che diventi il ​​master per i risultati di ricerca. Non so se utilizzarlo nel tuo contesto possa essere considerato "black-hat" dai crawler dato che il contesto è sottilmente differente.

Un approccio alternativo!

Se si dispone di un inventario di grandi dimensioni, è preferibile introdurre il concetto di impaginazione dei risultati. Potresti quindi avere una pagina non JavaScript funzionante con link ad altre pagine di inventario. È quindi possibile utilizzare JavaScript per intercettare l'azione di paginazione e utilizzare un metodo alternativo per ottenere i risultati se si ritiene che aggiunga valore alle persone che visitano il sito Web.

0

Il codice PHP sarà ancora richiamato quando la pagina viene generata. Dovresti fornire un URL per l'iframe che punta a una pagina diversa invece di incorporare l'HTML nell'iframe per rimandare l'esecuzione. Anche allora, non sono sicuro che l'URL non venga recuperato. Dovresti provarlo per essere sicuro. Usa Firefox/Firebug per vedere se una richiesta viene effettuata al caricamento della pagina nell'URL alternativo.

<noscript> 
<iframe src="/example.com/deferred-load.php"> 
</iframe> 
</noscript> 

Inoltre, hai ragione che Google non indicizzerà l'iframe come parte del tuo sito.

Problemi correlati