3

Web ページからの img src=... 呼び出しにファイア アンド フォーゲットを実装しようとしていますが、最も確実な方法を探しています。なんで?

Omniture や Coremetrics などのほとんどの Web 追跡システムでは、追跡システムが記録するすべてのデータをたまたま運ぶ img src に対する要求があります。他の画像リクエストと同様に、ページは応答を待機しようとするため、ページの読み込みが遅くなる可能性があります。

私がやろうとしているのは、リクエストが実際に成功したかどうかよりも Web ページの応答時間がはるかに優先される追跡システムを実装することです。

  1. サーバーはリクエストを受信し、すぐに応答できます (HTTP 応答コード 200)
  2. サーバーはリクエストを受け取りましたが、行き詰まり、エラー 500 レスポンス コードですぐに応答できます。
  3. サーバーがまったく稼働していない
  4. DNS の不具合により、サーバーが見つかりませんでした
  5. リクエストはサーバーにヒットしましたが、非常に行き詰まり、応答にかなりの時間がかかっています。

XMLHttpResponse オブジェクトと、静かに失敗する可能性のある非同期要求を使用して調査しましたが、同じオリジン ポリシーとブラウザー互換性コードの肥大化にすぐに遭遇します。単純な jane img リクエストが依然として最良のリクエスト メカニズムであると私は信じていますが、最小限のコードで最適なファイア アンド フォーゲットの実装を考え出そうとしています。これまでのところ、私はできることを知っています...

onerror="this.parentNode.removeChild(this)" onload="this.parentNode.removeChild(this)"

これは、リクエストに対する有限で予測可能な結論があるシナリオ 1 から 4 でうまく機能します。シナリオ 5 で故障しますが、その間に何かがあれば回避できます。

this.src.readyState == "complete" かどうかを検討していますが、最初に StackOverflow コミュニティをタップするのが賢明な場合、ブラウザーの互換性と競合状態の地獄の道を進んでいることがわかります。

誰でもこれと良い解決策の経験がありますか?

4

6 に答える 6

2

読み込み後にドキュメントに img タグを追加しないのはなぜですか?

于 2010-01-28T16:05:22.233 に答える
1

非同期でロードする必要があります。Google は 1 つを行います。もう少し重いものが必要な場合は、eVisitAnalyst が同様のことを行います。

非同期で実行することの厄介なボーナスは、.js が取得できない場合、ページがそれを待つ必要がないことです。

于 2010-12-21T16:31:51.647 に答える
0

私の見解: ユーザー エクスペリエンスが最優先で、追跡がその次です。私は WebTrends/Omniture & Coremetrics を使用してきましたが、リクエストに関して非常にきめ細かい詳細を提供します (後で、必要に応じてセグメント化できます)。これらの Web 分析ベンダーが実装されていなくても、サーバー ログから多くの情報を取得できます。セグメンテーションを自分で行うだけで済みます (利用規約に応じて IP をログに記録できます)。これらの Web 分析ベンダーはパフォーマンスを十分に認識しており、応答として 1x1 ピクセルを送信するだけですが、サーバーが遅いと、ユーザー エクスペリエンスが低下します ( google urchins の場合、この 1 つの画像が読み込まれるのを非常に長い時間待ちます)。<img src="vendor url"/>html domへ。リクエストが失敗したり、時間がかかったりしても、ユーザーはサイトが使えないことを感じなくなりました。

于 2010-01-28T16:24:15.847 に答える
0

img他の回答が示唆するように、ドキュメントが読み込まれた後にタグを画像に追加するだけです。

これにより、2 つの副次的な問題が発生します。1) ドキュメントがいつ読み込まれたかを知る方法と、2)imgタグを追加する方法です。1) には from JQuery を使用し、2) にはいくつかの DOM 操作を使用することをお勧めし$(document).ready()ます (これも JQuery を使用)。

ドキュメントが完全にロードされたことを検出してタグを挿入する方法はありますが、フレームワーク (JQuery 以外の代替手段でも問題ありません。動作することがわかっているものを提案しているだけです) を使用すると、特に作成に関しては、いくらかの労力を節約できます。複数のブラウザで動作します。

編集:タイプミス

于 2010-01-28T16:28:15.667 に答える
0

iframe を対象とするフォームで POST できます (同じドメインでも別のドメインでもかまいません)。

呼び出しを行った後、iframe を削除したり、再利用したりできます。

次に例を示します。

<form target="targetIfr" action="http://domain.com/" method="post">
    <input name="data" type="text" value="hello" />
</form>
<iframe name="targetIfr"></iframe>

次のように呼び出すことができます。

frm.submit();
ifr.parentNode.removeChild(ifr);
于 2010-01-28T16:29:35.097 に答える
0

これは古い質問ですが、誤った情報から始まり、誰もそれを修正していません。CoreMetrics や Adob​​e などの多くは、ページをブロックする可能性がある dom に読み込まれる画像リクエストを使用せず、outImage = new Image(); のような JS 画像オブジェクトを使用します。これは DOM にアタッチされず、イメージ タグと同じようにブロックされません。1x1 ピクセルの応答は、MIME タイプと一致させるためのものです。

タグを実装するために読み込まれる JS は、はるかに大きな影響を与えます。

于 2014-11-05T22:32:37.963 に答える