3

Internet Explorer 10 では、[戻る] ボタンを押すと、ブラウザーのキャッシュから前のページを取得しようとします。この動作は、戻るボタンを押すと、キャッシュを再利用する代わりに前のページの完全なリロードを行う IE9 を含む、ほぼすべての他のブラウザーとは異なります。

おそらくjavascript/headersなどを使用して、サイトでこのキャッシュをグローバルに使用しないように、WebサイトからIE10と通信するにはどうすればよいですか?

(注: これを無効にするための IE10 設定を探しているわけではありません。IE10 にこのキャッシュを [戻る] ボタンに使用しないように指示するブラウザーではなく、Web サイトに実装できるソリューションを探しています)。また、サイト内のすべてのページで機能するグローバル ソリューションを探しています...

サイトに PHP/Jquery を使用しています

ここに詳細があります

ページはフォームです。動的にロードされる情報が含まれています。(ユーザーがフォームを送信した回数が含まれているとしましょう)

フォームの送信ボタンをクリックします。その後、フォームのアクション ページにリダイレクトされます。

次に、戻るボタンを押します。

他のすべてのブラウザーでは、新しく更新された「ユーザーがフォームを送信した回数」で初期フォームをリロードします。ただし、IE10では、これは起こりません....IE 10でこれを行うにはどうすればよいですか。

ヘッダーの例を次に示します。

1. フォームを最初にロードするとき:

リクエストヘッダー

Key Value
Request GET /path/to/my/page HTTP/1.1
Accept  text/html, application/xhtml+xml, */*
Accept-Language en-US
User-Agent  Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)
Accept-Encoding gzip, deflate
Host    myhost.com
If-Modified-Since   Tue, 10 Sep 2013 23:55:33 GMT
If-None-Match   "1378857333"
DNT 1
Connection  Keep-Alive
Cookie  __utma=104299925.1011127538.1340896287.1364829735.1378764406.12; __utmz=104299925.1340896287.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); has_js=1; __utmc=104299925; __qca=P0-1247924781-1340896285157; _mkto_trk=id:601-CPX-764&token:_mch-sadfsadfze.com-1358808312889-73607; __utma=171146939.775168663.1343066079.1375907514.1378762647.41; __utmz=171146939.1343066079.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); s_stats_browser_info=%7B%22pluginInfo%22%3A%7B%22pdf%22%3A%5B%22pdf%22%2C%22application/pdf%22%2C%220%22%5D%2C%22quicktime%22%3A%5B%22qt%22%2C%22video/quicktime%22%2C%220%22%5D%2C%22realplayer%22%3A%5B%22realp%22%2C%22audio/x-pn-realaudio-plugin%22%2C%220%22%5D%2C%22wma%22%3A%5B%22wma%22%2C%22application/x-mplayer2%22%2C%220%22%5D%2C%22director%22%3A%5B%22dir%22%2C%22application/x-director%22%2C%220%22%5D%2C%22flash%22%3A%5B%22fla%22%2C%22application/x-shockwave-flash%22%2C%220%22%5D%2C%22java%22%3A%5B%22java%22%2C%22application/x-java-vm%22%2C%221%22%5D%2C%22gears%22%3A%5B%22gears%22%2C%22application/x-googlegears%22%2C%220%22%5D%2C%22silverlight%22%3A%5B%22ag%22%2C%22application/x-silverlight%22%2C%220%22%5D%7D%2C%22res%22%3A%221920x1080%22%7D; _pk_id.2.1644=19232922ec6753dc.1371502517.1.1371502630.1371502517.; SESS569093948b0206b05eb2212616da3db6=1977iogjr841af2s8l4sd1cjd0; XDEBUG_SESSION=12250; has_js=1; __utmc=171146939

応答ヘッダー:

> Key   Value Response  HTTP/1.1 200 OK Date    Tue, 10 Sep 2013 23:55:44 GMT
> Server    Apache/2.2.20 (Ubuntu) X-Powered-By PHP/5.4.15-1~tooptee10+1
> Last-Modified Tue, 10 Sep 2013 23:55:44 +0000 Cache-Control   no-cache,
> must-revalidate, post-check=0, pre-check=0 ETag   "1378857344"
> Keep-Alive    timeout=15, max=9987 Connection Keep-Alive
> Content-Type  text/html; charset=utf-8

2. 戻るボタンを押してそのフォームに戻る場合

リクエストヘッダー

>     Key   Value
>     Request   GET /path/to/my/page HTTP/1.1
>     Accept    text/html, application/xhtml+xml, */*
>     Accept-Language   en-US
>     User-Agent    Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)
>     Accept-Encoding   gzip, deflate
>     Host  myhost.com

応答ヘッダー

> Key   Value Response  HTTP/1.1 304 Not Modified
> X-Powered-By  PHP/5.4.15-1~tooptee10+1 ETag   "1378857344"
> Keep-Alive    timeout=15, max=9987 Content-Type   text/html; charset=utf-8
> Content-Length    117183 Expires  Tue, 10 Sep 2013 22:55:36 GMT
> Last-Modified Tue, 10 Sep 2013 23:55:44 GMT

最終的に 304 が返されることに注意してください。これを Firefox で試したところ、戻るボタンを押すと、代わりに 200 が返されました。

4

2 に答える 2

1

ご希望の動作は、ユーザーの戻るボタンに対する期待を裏切る動作だと思います。

ユーザーは、[戻る] をクリックすると、以前に表示していたページを離れたときの状態に戻ることを期待しています。最新のブラウザーのほとんどは、ページをキャッシュするだけでなく、ページの状態 (Javascript コンテキストを含む) をメモリに保持することでこれを実現しています。フォームまたは操作する Javascript に書き込みます。

ほとんどのブラウザーでは、やなどのヘッダーを設定することで、これを強制的にオーバーライドできます。あなたのケースでIE10でうまくいくかどうか、またはIE10がこれさえ無視してとにかくページに戻るかどうかはわかりません。もしそうなら、私はそれを本当に責めることはないと思います。高速であることと、以前に表示されたときのページに戻ることの両方のユーザーの利益のためにそれを行っています。Cache-Controlno-cacheno-storeno-store

私が取るアプローチは、あなたが私に同意する必要はありませんが、デザインを再考することだと思います. ユーザーが戻ってきたときに見たものと同じものを表示しないのに、なぜユーザーに「戻る」を要求するのですか? 更新されたフォームを表示したい場合は、POST の後でフォームにリダイレクトしないでください。これにより、新しいページの読み込みとしてカウントされ、Cache-Controlヘッダーが尊重されます。それが私がやりたいことであり、事実上の標準になっています。

tl;drそれは可能ですが、あなたがやりたいことができるかどうかはわかりませんが、戻る以外のことで戻るボタンに頼らないように、代わりに POST の後にリダイレクトno-storeするように移動することを検討しています前の状態に。

于 2013-09-11T00:40:48.587 に答える