F.Ko-Jiの「一秒後は未来」

IE6とIE7の1訪問あたりのページビューが異常に高くなってるサイトありませんか?

なんだか最近ブログの1訪問者あたりのページビュー(Pages/Visit)が上がってるなぁと思って喜んでたら、Facebookのプラグインが悪さをしていたというお話しです。

ある時期からPages/Visitが上がった

facebook-ie6-ie7-reload-bug-0.jpg

↑ 全体で見るとほんの少しですが上がってます。

ちょうどデザイン変更したタイミングと重なっていたので、「これデザイン変えたからじゃね?」と思っていました。が、少し気になったのでアクセスログを調べてみたのです。

そうすると興味深いログを見つけました。

?fb_xd_fragmentのついたページが影響?

facebook-ie6-ie7-reload-bug-2.jpg

↑ 短時間に fb_xd_fragment つきのアクセスが頻発している。

とある日のアクセスログなのですが、「…?fb_xd_fragment HTTP/1.1″ …」というログがたくさんあるのがわかります。しかも数秒おきに発生していてアクセス元も同じです。

※ (追記) なお、あとで調べたのですが 301 リダイレクト fb_xd_fragment つきのURLを .htaccess でリダイレクトするように設定していただけで、以下の grep ログを見ても分かる通り301のありなしは無関係でした。

しかもさらに調べてみると、ブラウザがIE6.0とIE7.0の場合のみ発生しているのです。

# grep fb_xd_fragment blog.fkoji.com_access_log.2 | grep -c 'MSIE 6.0'
2440
# grep fb_xd_fragment blog.fkoji.com_access_log.2 | grep -c 'MSIE 7.0'
7321
# grep fb_xd_fragment blog.fkoji.com_access_log.2 | grep -c 'MSIE 8.0'
0
# grep fb_xd_fragment blog.fkoji.com_access_log.2 | grep -c 'MSIE 9.0'
0

確かにAnalyticsでブラウザをIEに絞り込むと、Pages/Visitの上がり方は顕著になっています。

facebook-ie6-ie7-reload-bug-1.jpg

↑ IEで絞り込んだ。

あと「fb_xd_fragment」というのはいかにもFacebookっぽい。というわけで、このあたりのキーワードを元に情報がないか調べてみると、サイトに設置しているFacebookのプラグインが原因ではないかという結論に行き着きました。

IE6とIE7でFacebookプラグインを表示するとiframe内でサイトをリロードしまくることがある

以下のサイトではFacebookアプリと書かれていますが、Facebookのいいね!ボックスやコメントプラグイン、いいね!ボタンも該当するのではないかと思います。

IEとiPhoneを含むSafariで、Facebookアプリでログインセッションを受け取れず(getSessionがNULL)、iFrameの中が無限reloadされる不具合への対策です。

» IE/SafariでFacebookアプリの無限reload対策

IE6.0、IE7.0だけでなくSafariでも発生するようです。

もしブラウザからのリクエストが1回ならAnalyticsには1PVとして記録されるのですが、このリロードはおそらくFacebookのプラグインが読み込まれるか表示されるタイミングでおこなわれていて、しかもページ内に動的に生成された iframe 内で読みこまれているので、Analyticsに1ページビューとして記録されてしまうのです。

そして iframe 内で読み込まれたページ内でさらにFacebookプラグインが読み込まれ、さらに iframe が生成してその中で再度ページがロードされる・・・という繰り返しになっているのではないかと思われます。

必ずしもすべてのサイトで発生するわけではない

Facebookプラグインは他にも設置しているサイトがあるので調べてみたのですが、特に同様の現象が発生しているサイトは見当たりませんでした。

上記のページではサードパーティーCookieについて述べられているので、そのあたりのポリシーと関係しているかもしれません。

対策としてはそのページに書かれているようにP3Pのヘッダーを出力するようにするか、そもそもIE6とIE7ではFacebookプラグインが表示されないようにするかのどちらかだと思います。

ちなみにこのブログでは、IE6.0とIE7.0のユーザーエージェントだった場合は、Facebookプラグインをすべて非表示にしてみました。すると・・・

facebook-ie6-ie7-reload-bug-3.jpg

↑ 明らかにPages/Visitが元に戻ったw

古いIEを使っているユーザーがたとえ100人くらいしかアクセスしてこなくても、1人あたり10回リロードしてたら1,000ページビューになってしまいますから、訪問者のブラウザシェアによっては大きく影響しているのではないかと思われます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

著者について

fkoji

F.Ko-Ji

Webエンジニアやってます。最近は ドットインストール の開発がお仕事です。その傍ら、個人で Meity電車遅延なう梅酒.in#グラドル自画撮り部 の部室といったネットサービスを開発・運営してます。梅酒と草野球とリアル脱出ゲームが好きです。

» 詳しいプロフィールや運営サービスの一覧など