È possibile impedire a Chrome e ad altri browser di precaricare / eseguire il rendering del mio sito?


14

So che puoi guidare Chrome a precaricare i link che ritieni possano fare clic sul tuo sito , ma puoi anche fare il contrario? Puoi dire a Chrome (o davvero a qualsiasi browser) di non precaricare e eseguire il prerender del tuo sito?

Esiste un tag o un altro modo in cui posso dire ai browser che non è necessario eseguire i collegamenti di precaricamento dalla pagina attualmente visualizzata?


1
Curioso, perché lo vorresti?
Martijn,

@Martijn Un caso che vedo è quando il tuo sito contiene contenuti altamente dipendenti dal tempo o altamente dinamici in cui un ritardo tra il rendering della pagina e quando l'utente lo vede effettivamente è importante.
Anders Fjeldstad

Risposte:


12

Chrome e Safari inviano X-Purpose: previewun'intestazione HTTP durante il prelievo / rendering del contenuto Web. [ Fonte ]

Firefox invia un'intestazione simile chiamata X-moz: prefetch. [ Fonte ]

Per bloccare il prelievo anticipato, potresti restituire una risposta 404 quando vengono rilevate tali intestazioni, come suggerito da Peter Freitag in questo post del blog . Si consiglia di aggiungere queste righe .htaccessper bloccare il prefetch di Firefox:

RewriteEngine On
SetEnvIf X-moz prefetch HAS_X-moz 
RewriteCond %{ENV:HAS_X-moz} prefetch 
RewriteRule .* /prefetch-attempt [L]

Puoi estenderlo per bloccare il prefetch di Firefox, Safari e Chrome in questo modo (non testato, ma dovrebbe funzionare):

RewriteEngine On
SetEnvIf X-moz prefetch HAS_preview 
SetEnvIf X-Purpose preview HAS_preview
RewriteCond %{ENV:HAS_preview} .
RewriteRule .* /prefetch-attempt [L]


1

La risposta sopra non ha funzionato per me. Ciò che ha funzionato, tuttavia, è stato questo:

RewriteEngine On
SetEnvIfNoCase X-Forwarded-For .+ proxy=yes
SetEnvIfNoCase X-moz prefetch no_access=yes

# block pre-fetch requests with X-moz headers
RewriteCond %{ENV:no_access} yes
RewriteRule .* - [F,L]

Da: askapache.com

Il flag [F] restituisce un codice di stato Proibito 403 al browser, mentre [L] indica che la regola dovrebbe essere l'ultima regola da elaborare.

Inoltre, Chrome non sembra più precaricare i collegamenti (almeno, per i meta tag precedenti / successivi).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.