2

問題を説明する非常に単純なテスト ケースがあります。

以下は、ERB ファイルで Rails に表示しているページです。

<div><%=rand%></div>

<p><a href="http://google.com">Go</a></p>

エラーを表示するには、ページを読み込みます。として表示される乱数に注意してくださいrand1。Google リンクをクリックします。ブラウザの「戻る」ボタンをクリックします。として表示される乱数に注意してくださいrand2

問題は次のとおりです。Firefox と Chrome では、rand1 != rand2 (常に) です。Safari と IE では、rand1 == rand2 (常に)。

ブラウザの不一致はなぜですか?Safari と IE は Rails からの出力をキャッシュするのに、他の 2 つのブラウザーはキャッシュしないのはなぜですか? Safari と IE でページを更新するにはどうすればよいですか?

(これは問題を示す簡単なテスト ケースです。これは、バックボーン アプリケーションに影響します)。

4

2 に答える 2

0

特にWebKitには、説明しているケースを正確に処理するための積極的なページキャッシュ戦略があります(リンクをクリックしてからすぐに戻るボタンをクリックします)。リソースだけでなく、ページの DOM やその他の状態もキャッシュすることで、バック アクションをほぼ瞬時に実行できるようにするという考え方です。これについては、次の 2 つの記事で読むことができます。

load/unloadpageshow/のイベントを組み合わせて使用​​することで、pagehide必要なことを達成できる場合があります。

IE が WebKit に似たものを実装しているかどうかはわかりませんが、おそらくこれでも修正されるでしょう。

于 2012-08-06T13:02:53.737 に答える