スレッド一覧 > 記事閲覧
[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
メンテ

Page: 1 | 2 | 全部表示 スレッド一覧 新規スレッド作成

Re: 再起動はしています ( No.8 )
日時: 2021/03/15 09:02
名前: 匿名 ID:DSq2XAVc メールを送信する

なるほど、当然再起動してますよね…失礼いたしました。
となると、原因は
EnableMMAP On
EnableSendfile On
だった点以外にもあるかもしれないのですね。
謎が深まりますね(´・ω・`)
ただ、
EnableMMAP Off
EnableSendfile Off
にする事ができただけでも大きな前進なので、
これまたお忙しい中にもかかわらずの調査、ありがとうございます。

mod_fcgid周りなど、その他の怪しい点の調査については
余裕が出来てからの無理のない範囲でも大丈夫です。
厄介なIssueを持ち込んでしまい、申し訳ない限りでもあります(´・ω・`)

今は.htaccessの "no-store" による仮対処で対応中ですが、
検証URLである https://sinst.ie-t.net/a.html には
"no-store"の影響が出ないように設定したので、
いつでもそこから検証できるようにしてあります。

掲示板についても了解です。
メンテ

Page: 1 | 2 | 全部表示 スレッド一覧 新規スレッド作成

題名
スレッドをトップへソート
名前
「名前#任意の文字列」でトリップ生成
E-Mail
入力するとスレッドの通知メールを受け取れます。(非表示)
URL
パスワード (記事メンテ時に使用)
投稿キー (投稿時 投稿キー を入力してください)
コメント

   クッキー保存