ユーザーがサイトをクリックする可能性が高いと思われるリンクをプリフェッチするようにChromeをガイドできることを知っていますが、逆もできますか?あなたは、クロム(または本当に言うことができるすべてのサイトをプリフェッチしてプリレンダリングしていないブラウザを)?
現在表示されているページからリンクをプリフェッチするべきではないことをブラウザに伝えることができるタグまたは他の方法はありますか?
ユーザーがサイトをクリックする可能性が高いと思われるリンクをプリフェッチするようにChromeをガイドできることを知っていますが、逆もできますか?あなたは、クロム(または本当に言うことができるすべてのサイトをプリフェッチしてプリレンダリングしていないブラウザを)?
現在表示されているページからリンクをプリフェッチするべきではないことをブラウザに伝えることができるタグまたは他の方法はありますか?
回答:
ChromeおよびSafariは、X-Purpose: preview
Webコンテンツのプリフェッチ/レンダリング時にHTTPヘッダーを送信します。[ ソース ]
Firefoxは、という同様のヘッダーを送信しますX-moz: prefetch
。[ ソース ]
プリフェッチをブロックするには、このブログ投稿でPeter Freitagが提案したように、そのようなヘッダーが検出されたときに404応答を返すことができます。.htaccess
Firefoxのプリフェッチをブロックするには、次の行を追加することをお勧めします。
RewriteEngine On
SetEnvIf X-moz prefetch HAS_X-moz
RewriteCond %{ENV:HAS_X-moz} prefetch
RewriteRule .* /prefetch-attempt [L]
これを拡張して、次のようにFirefox、Safari、Chromeのプリフェッチをブロックできます(テストされていませんが、動作するはずです):
RewriteEngine On
SetEnvIf X-moz prefetch HAS_preview
SetEnvIf X-Purpose preview HAS_preview
RewriteCond %{ENV:HAS_preview} .
RewriteRule .* /prefetch-attempt [L]
Google Chromeはリクエストの事前レンダリングに特別なヘッダーを送信しなくなりました。見る:
上記の答えはうまくいきませんでした。しかし、うまくいったのはこれでした:
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]
From:askapache.com
[F]フラグは403 Forbiddenステータスコードをブラウザに返しますが、[L]はルールが処理される最後のルールであることを示します。
また、(少なくともprev / nextメタタグの場合)chromeはリンクをプリフェッチしなくなったようです。