[148] 戻る・進むボタンを押した時のみキャッシュしたい
|
- 日時: 2021/03/13 01:48
- 名前: 匿名
ID:7KIlZSF2
- 参照: https://sinst.ie-t.net/
- 非常にありがたいサービスに感謝します。
1つ、解決したい問題があります:
例えば a.html と a.php があり、 a.html から a.php へのリンクが貼られているとします。 そして、a.php はアクセスすると mt_rand 等でランダムな数値を表示するものとします。ランダムのため、F5キーなどでリロードするとそのたびに違う数値を表示します。
この時、例えば初めてa.htmlにアクセスした人がリンクをクリックし、 a.phpが初めて実行されて「43」と表示されたとします。
その後、ブラウザの「戻る」ボタンを押してa.htmlに戻ります。 問題はここからです。
次に再度リンクをクリックしてa.phpにアクセスすると、 再びa.phpが実行され、今度は「43」以外の数値(例えば「125」)が表示されるのを期待します。 一方、リンククリックではなく、ブラウザの「進む」ボタンにて再度a.phpを表示した時は、キャッシュから読み込まれて再び「43」が表示される事を期待します。
しかし、実際には「進む」ボタンのみならず、リンクをクリックした時にもキャッシュが読み込まれてしまい、 どんなにクリックしても「43」が表示され続けてしまうのです。 F5キーを押さない限り、これを別の数値にすることはできませんでした。 つまり、PHPの実行結果のキャッシュが強すぎるのです。
そこで、Header set Cache-Control "no-store" などを設定し、 キャッシュを無効化する事を考えました。 そうすれば、リンククリック時に必ずa.phpが再実行されます。
しかし、それだと別の問題が起こります。 キャッシュを無効化してしまうと、 一度「戻る」ボタンでa.htmlに戻った後に 「進む」ボタンで再びa.phpを表示させた時にも、 強制的にa.phpが再実行されてしまうのです。 これでは、サイトアクセスが増えた時にサーバへの負荷がかかりすぎてしまいます。 「進む」ボタンの時はPHPを実行させずに、キャッシュから「43」が表示されて欲しいのです。
整理すると、 「進む/戻る」ボタンの時のみキャッシュから読み込み、 リンククリックとF5キーの時はPHPをしっかり実行するようにしたいのですが、 これを実現する設定があったり、 現状の挙動の原因となっている何かしらの設定項目があるのでしょうか。
私は、過去にこのような理想の動作が実現できたサーバ環境も経験したことがあるので、 設定次第で解決可能かもしれないと思い、知恵を募ります。
1つ、原因の候補かもしれないものとして、「ウェブアクセラレータ」というものを疑っています。 ネットで調べてみると、一部のサーバには「ウェブアクセラレータ」という機能を備えているものがあるらしく、これはブラウザ側が持つキャッシュとは別に、サーバ側がキャッシュを保持するもののようです。「ウェブアクセラレータをオフにしたら、キャッシュのおかしな挙動が直った」という体験談が見つかりました: https://lpeg.info/webworks/cash_on.html
|
|