補足説明 ( No.1 ) |
- 日時: 2021/03/13 08:43
- 名前: 匿名 ID:7KIlZSF2
- 参照: https://sinst.ie-t.net/a.html
- 追記:
昨晩間違えてトップページのURLを書いてしまったため、a.htmlへの検証用URLを貼ります。
追記2: 昨晩の「私は、過去にこのような理想の〜(中略)〜知恵を募ります。」の部分の表現が分かりにくかったので、補足します。以下の3点です。:
・https://lpeg.info/webworks/cash_on.html にて説明されている「ウェブアクセラレータ」という機能について、 もしかしたら、他サーバーと同様のこの機能がこちらのサーバーにもあり、それが原因でa.phpの奇妙なキャッシュ動作が起こっているのかもしれない点
・上記のサイトによると、他サーバーのコンパネには「ウェブアクセラレータ」機能をオンオフできるスイッチが用意されていることが多いようですが、もしもこちらのサーバーにも同様の機能があり、この機能が悪さをしていたとした場合、こちらのサーバーのコンパネにも同様のスイッチがあるかどうか
・それとも、そもそも「ウェブアクセラレータ」とは別の原因による場合、他にどのような原因が考えられるか
|
補足2 ( No.2 ) |
- 日時: 2021/03/13 09:15
- 名前: 匿名 ID:7KIlZSF2
- 連続投稿失礼します。
(ブラウザ側ではなく)サーバー側のキャッシュについて調べていると、 もしかしたら apache の httpd.conf にある ・EnableMMAP ・EnableSendfile という2つの項目(ディレクティブ)がサーバーサイドキャッシュに関わっているようです。 (nginx.conf ならば sendfile : off; などのようです)
原因調査のため、まずこれらの項目が Off になっているかどうかの確認と、なっていなければ、Offにしてみる事の検討をしていただけると幸いです。これにはサーバソフトの再起動が必要らしいので、私にはいじれない項目かと思います。そのため、こちらのスレッドに調査結果が届くまでの間、暫く待ってみることにします。特に急かすつもりはないので、調査は無理のない範囲で大丈夫です。
不勉強ながらこれらの項目の存在をついさっき知ったため、補足情報の書き込みが遅れてしまい申し訳ございませんでした。
|
お待ち下さい ( No.3 ) |
- 日時: 2021/03/13 22:42
- 名前: ちらみ◆kBt3KPJY0E ID:OHyW4cA2
- 了解しました。
今月は本業の方でバタバタしてて今もシステム切替中なので落ち着いたら検討します。
|
Re: お待ち下さい ( No.4 ) |
- 日時: 2021/03/14 11:26
- 名前: 匿名 ID:DeJq4FJ6
- 早速のご返答ありがとうございます。了解しました。
とりあえず3月の間は、 サーバサイドキャッシュが動作上の問題になるPHPファイルのみ、 Header set Cache-Control "no-store" で仮対処しておこうと思います。 続報は4月以降、待つことにします。
|
Re: 戻る・進むボタンを押した時のみキャッシュしたい ( No.5 ) |
- 日時: 2021/03/14 16:48
- 名前: ちらみ◆kBt3KPJY0E ID:pvPHy9XQ
- 仰るような症状になった覚えは無いのですが、取り急ぎApacheのグローバル設定にてご要望の設定としました。
# Defaults if commented: EnableMMAP On, EnableSendfile Off # EnableMMAP off EnableSendfile Off
ちなみにこれまでは両方ともOnでした。 何故そうしたのかも覚えてないんですが
もし別の問題が発生した場合は元に戻して、お使いのドメイン部分のみを上記設定とします。
|
Re: No.5 ( No.6 ) |
- 日時: 2021/03/14 22:05
- 名前: 匿名 ID:DeJq4FJ6
- なんと、お忙しい中の早速の設定変更、ありがとうございます…!
なるほど、Onだったのですね。
ただ、2021年3月14日21時58分現在も、 症状が続いているようなので、もしかしたらApacheの再起動がまだなされていないのかもしれません。 EnableMMAP off EnableSendfile Off 調べてみると、これらの設定変更の反映には、Apacheの再起動が必要とのことです。
念のため、2021年3月14日21時58分現在、 自分のブラウザ側の不具合の可能性も考慮して、 自分の持っているパソコン上のChromeだけでなく、 ・Firefox ・自分のAndroidスマホのChrome ・自分のiPhoneスマホのSafari、 ・実家のパソコンのChrome ・自分のパソコンのChromeのシークレットモード で再度検証してみましたが、 いずれも同じ症状が見られます。 つまり、まだ旧設定の状態が残っているようです。
※ちなみに、実はこのフォーラムのBBS自体にも同様の症状がありまして、返信が来たにもかかわらず返信前の状態が表示されるので、 右クリックで「フレームを再読み込み」をしてやらないと返信が表示されない状態のようです。
報告が度重なってしまい、すみません。
|
再起動はしています ( No.7 ) |
- 日時: 2021/03/14 22:16
- 名前: ちらみ◆kBt3KPJY0E ID:pvPHy9XQ
- Apacheは当然再起動しています。
ここの掲示板は確かにキャッシュされてしまいますが、これは特にChromeで顕著でiframeだからある適度仕方ないかなと諦めてます。 CGIに直接アクセスすれば大丈夫だと思います。
当サーバではmod_fcgidを使っているのでその辺も関係してるかもですが今はちょっと調べてる余裕がないです。
|
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"の影響が出ないように設定したので、 いつでもそこから検証できるようにしてあります。
掲示板についても了解です。
|
【続報】解決しました!(Re: Re: 再起動はしています) ( No.9 ) |
- 日時: 2021/03/15 18:20
- 名前: 匿名 ID:8DK/kqdM
- 解決した可能性が濃厚な続報です:
Header set Cache-Control "no-store" ではなく Header set Cache-Control "max-age=0" を指定すると、 望み通りの挙動になりました。
一応、 Header set Cache-Control "max-age=0" は既に昨日も試していましたが、昨日は効果が出なかったため、一時は無理かと思われました。 しかし、今日再び "max-age=0" を試してみると、なぜか効果があり、理想の挙動になりました。
おそらく、昨日と今日とで違うのは、EnableMMAP と EnableSendfile の状態です。 よって、今の所、
「EnableMMAP と EnableSendfile が Off になっていて、且つ、 "max-age=0" を指定すれば、理想通りの挙動になる」
という "仮説" が立っております。
たった今、自分のPCのChrome・自分のPCのFirefox・会社のPC・iPhoneのSafari・AndroidのChromeにて、解決を確認できました。 今となっては検証URLのみならず本番PHPも全て完全に理想の挙動となったため、事実上の解決と見て良いと思います。やはり、 EnableMMAP Off EnableSendfile Off を指定できた点が大きかったようです。対応していただき、本当にありがとうございました!
|
mod_expires ( No.10 ) |
- 日時: 2021/03/15 18:47
- 名前: ちらみ◆kBt3KPJY0E ID:ndJwt45Q
- 検証ありがとうございます。
Apacheのmod_expiresが関係していそうなのでグローバル設定で下記の様にしてみました。 好みに応じて.htaccessで調整下さい。 あまりキャッシュさせなさ過ぎるのもサーバや回線負荷に繋がるので難しいところです。
■変更前 ExpiresActive On ExpiresDefault "access plus 1 month"
■変更後 ExpiresActive On # Default ExpiresDefault "access plus 0 seconds" # JavaScript ExpiresByType text/js "access plus 1 month" ExpiresByType text/javascript "access plus 1 month" ExpiresByType application/javascript "access plus 1 month" ExpiresByType application/x-javascript "access plus 1 month" # CSS ExpiresByType text/css "access plus 1 month" # images ExpiresByType image/gif "access plus 1 month" ExpiresByType image/png "access plus 1 month" ExpiresByType image/jpg "access plus 1 month" ExpiresByType image/jpeg "access plus 1 month" ExpiresByType image/svg+xml "access plus 1 month" # Favicon and cursor images ExpiresByType image/x-icon "access plus 1 month" # PDF ExpiresByType application/pdf "access plus 1 month" # Fonts ExpiresByType application/x-font-ttf "access plus 1 month" ExpiresByType application/x-font-woff "access plus 1 month" ExpiresByType application/x-font-opentype "access plus 1 month" ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
以上です。
|
Re: mod_expires ( No.11 ) |
- 日時: 2021/03/15 23:41
- 名前: 匿名 ID:8DK/kqdM
- グローバル設定の整備まで、ありがとうございます。
キャッシュは難しいテーマですよね。 (画像などは差し替え時に問題が起こった場合に .htaccess で調整するかもしれませんが、)基本的にはPHP以外については積極的にキャッシュしようと思っているので、このままの状態で運用してみます。 今回はどうもありがとうございました。(`・ω・´)
(※本題から逸れてしまい恐縮ですが、 PHPのバージョンがばれてしまう X-Powered-By ヘッダが送られる状態はセキュリティ上良くないとのことなので、 php.iniにて expose_php=Off を指定して、 X-Powered-By ヘッダ が送られないようにしておけると、なおありがたく思います!)
|
対応しました ( No.12 ) |
- 日時: 2021/03/16 10:56
- 名前: ちらみ◆kBt3KPJY0E ID:utndJphk
- ご報告ありがとうございます。
> expose_php=Off 対応しました。
|
Re: 対応しました ( No.13 ) |
- 日時: 2021/03/16 19:46
- 名前: 匿名 ID:bYmRPoks
- ありがとうございます、
X-Powered-By ヘッダ の消滅も無事確認もできました。 これで、全ての問題が解決しました。 この度は本当にありがとうございました!
|