1

たとえば、Safariでページを開いた場合

http://stackoverflow.com

次に、Safari コンソールを開き、websocket を開きます。次に例を示します。

var ws = new WebSocket("ws://ws.dslreports.com")

次に、ページ上のリンクをクリックし、BACK を押します。バック キャッシュは無視され、ページがリロードされます。これは、Safari 5.0 (最初に hixie Websocket サポートが導入された) と、hybi を使用する最新の Safari 6.x で観察されます。Chrome と Firefox および Websocket をサポートするその他のブラウザーは、この方法でバック キャッシュを無効にしないようです。

その結果、Safari で websockets を有効にできません。これを行うと、接続を作成したページへの最初の BACK のバック キャッシュが無効になるためです。ただし、ページが再接続しようとしない限り、後続の BACK は機能します。そうすると、すべてのページでバックキャッシュ ミスが発生します。

これは設計によるものですか?Safari ユーザーのポーリングにフォールバックする以外の回避策。それ以外の場合、Safari は websocket を問題なくサポートしているため、これは残念です。

更新: 予期しない無効化動作は、モバイル Safari では発生しません。たとえば、IOS では、ページが Websocket を使用でき、新しいリンクに移動し、[戻る] を押してもサーバーからページが再要求されません。

4

0 に答える 0