2012-05-15 9 views
6
<!—Firefox Prefetching --> 
<link rel="prefetch" href="http://www.example.com/page2.html"> 

<!—Chrome Prefetching --> 
<link rel="prerender" href="http://www.example.com/page2.html"> 

Se avessi Javascript nella pagina di prerender/prefetch (come ad esempio Google Analytics JS), il prerender/prefetch eseguirà Javascript nella pagina? O ritarda qualsiasi esecuzione di JS fino a quando la pagina non viene effettivamente richiesta dall'utente?Rel PreRender/PreFetch, esegue JS?

+0

Ho fatto qualche altra ricerca e ho risposto alla domanda da solo, ed è interessante notare che prefetch e prerender si comportano in modo abbastanza diverso l'uno con l'altro. –

risposta

7

Ho appena fatto un po 'di ricerche su questo:

Prefetch sarà caricare la risorsa di livello superiore, che è spesso semplicemente la pagina HTML

Prerender preleverà elementi figlio pure, e si eseguire il codice JavaScript . Utilizzando l'API di visibilità delle pagine possiamo determinare lo stato attuale della visibilità della pagina caricata.

Quindi la risposta è sì, eseguirà JS fintanto che l'utente è su Chrome e viene utilizzato il prerender. Inoltre, la versione corrente di Google Analytics sfrutta appieno l'API di visibilità della pagina in modo che le statistiche non siano distorte, tuttavia è probabile che ci sia un sacco di codice in circolazione le cui statistiche sono distorte non gestendo correttamente i casi di prerendering.

+0

In realtà, sono comandi volutamente diversi. 'prefetch' può essere usato sulle risorse che vuoi precaricare (uno script, un'immagine, un file html, qualunque cosa), mentre' prerender' serve per prerenderare una pagina completa che tu (si spera) sa che è altamente probabile che venga visitata il prossimo, e molto presto, dal tuo utente. Potrebbe essere ad esempio la pagina di accesso per il tuo forum, o qualcosa del genere. 'prefetch' è supportato da chrome, ff, ie e edge. 'prerender' è supportato da chrome, ie edge. (anche se controllare caniuse.com per il supporto aggiornato ...) – Svish

+0

Hai una fonte ufficiale di Google che dice che Google Analytics sa come ignorare gli hit di prefetch? – Flimm

1

No, il prefetching memorizza semplicemente il file nel cache, non esegue javascript che contiene.

Come so analytics.js non analizza il sito Web quando richiesto. Funziona quando viene eseguito javascript. Quando browser precarica (richiesta) un file analytics.js che non significa che il file analytics.js viene eseguito. Pertanto, i dati di Google Analytics del tuo sito web non saranno influenzati dal metodo di prefetching fino a quando la pagina non verrà effettivamente richiesta dall'utente.

1

Sul tema the spec è muto e semplicemente afferma:

La parola chiave di prefetch indica che preventivamente il recupero e il caching la risorsa specificata è probabile che sia utile, in quanto è altamente probabile che l'utente richiederà questa risorsa

Da questo si può dire che l'esecuzione di JS nelle pagine da prefetching è definito.

Se un fornitore di browser vede i vantaggi nell'esecuzione di JS nelle pagine precaricate è al fornitore.

+0

Ho appena scoperto che il prefetch carica solo l'elemento di livello superiore, tuttavia prerender recupererà tutti gli elementi figlio e eseguirà JS. –