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

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

プリレンダー/プリフェッチするページにJavascriptがある場合(Google Analytics JSなど)、プリレンダー/プリフェッチはページでJavascriptを実行しますか?または、ページが実際にユーザーによって要求されるまで、JSの実行を遅らせますか?

4

3 に答える 3

7

私はこれについてもう少し調査をしました:

Prefetch多くの場合、単純なHTMLページであるトップレベルのリソースをロードします

Prerender子要素もフェッチし、Javascriptコードを実行します。Page Visibility APIを使用すると、読み込まれたページの現在の可視性の状態を判断できます。

したがって、答えは「はい」です。ユーザーがChromeを使用していて、事前レンダリングが使用されている限り、JSが実行されます。また、現在のバージョンのGoogleAnalyticsはPageVisibility APIを最大限に活用しているため、統計が歪曲されることはありませんが、事前レンダリングのケースを適切に処理しないことで統計が歪曲されているコードが実際に多数存在する可能性があります。

于 2012-05-15T15:52:59.653 に答える
2

いいえ、プリフェッチはファイルをキャッシュするだけで、含まれているjavascriptは実行されません。

私が知っているように、analytics.jsはあなたがそれを要求したときにウェブサイトを分析しません。javascriptを実行すると機能します。ブラウザがanalytics.jsファイルをプリフェッチ(リクエスト)すると、analytics.jsファイルが実行されるわけではありません。したがって、ページが実際にユーザーによって要求されるまで、WebサイトのGoogleAnalyticsデータはプリフェッチ方法の影響を受けません。

于 2012-05-15T15:31:09.240 に答える
1

この件に関して、仕様はミュートであり、単に次のように述べています。

prefetchキーワードは、ユーザーがこのリソースを必要とする可能性が非常に高いため、指定されたリソースをプリエンプティブにフェッチしてキャッシュすることが有益である可能性が高いことを示します。

このことから、プリフェッチされたページでのJSの実行は未定義であると言えます。

ブラウザベンダーがプリフェッチされたページでJSを実行することにメリットがあるかどうかは、ベンダー次第です。

于 2012-05-15T15:36:54.683 に答える