新しい Google chrome ブラウザー、つまりバージョン 17 以降 (他のブラウザーもこれを行うかどうかは不明) の場合、デフォルトで事前レンダリング機能があるようです ( http://support.google.com/chrome/bin/answer. py?hl=en&answer=1385029 ) が有効になっているため、ユーザーがアドレス バーに URL を入力し終える前にページが読み込まれます。
これはほとんどが静的なコンテンツを持つページにとっては良いトリックだと思います。これは、ユーザーを欺いて、ページを効果的に先にロードすることで、ページのロードを高速化するようにします。ただし、これは、ロード時に何らかのアクション/ロジックをトリガーするページでは問題になります。
たとえばwebsocket
、サーバーへの接続を確立し、ロードされるとすぐにメッセージを送信するページを考えてみましょう。ユーザーがこのページの URL を入力している間に、接続が確立されて msg が送信される可能性がありますが、ユーザーが実際にアドレス バーで「Enter」を押すと、websocket
接続が失われ、再度確立され、msg が送信されます。これはおそらく、websocket が実際のページの読み込みを更新として扱うためです。現在、切断または特定のメッセージの受信に応答するロジックがある場合、これによりサーバー側で混乱を招く動作が発生する可能性があります。もう 1 つの例はリダイレクトです。この場合、ページが事実上 2 回読み込まれるため、二重のリダイレクトが発生する可能性があります。
開発者が制御できない機能をオフにする以外に、このブラウザ機能に対処する効果的な方法はありますか? いくつかのJavaScript
トリック?