Skip to:
現状はデフォルトでは、キャッシュに関わるヘッダーは以下のみが出力されている。
Pragma: no-cache
現代的には、Pragmaではなくて、Cache-Controlが好ましいと思われる。
https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/Pragma
MTはCache-Controlを設定する環境変数を持っているが、初期値がundefであるため基本的には出ていない。
https://github.com/movabletype/movabletype/blob/develop/lib/MT/Core.pm#L1920
HeaderCacheControlの初期値を private, no-store, no-cache, must-revalidate などにしてもよいと思うが、ただ、HeaderCacheControl は run の中で常に出力する実装になっているが、
private, no-store, no-cache, must-revalidate
run
https://github.com/movabletype/movabletype/blob/develop/lib/MT/App.pm#L3215-L3217
今回の目的でいうと、 set_no_cache の中で出力する方がよいと思う。
set_no_cache
https://github.com/movabletype/movabletype/blob/develop/lib/MT/App.pm#L4619-L4628
いくつかのmodeでは set_no_cache を呼ばないようになっており、そこではやはり Cache-Control は付けない方がよいはず。
https://github.com/movabletype/movabletype/blob/develop/lib/MT/App/CMS.pm#L651-L657
ただ現状で「CDNを入れているので、とにかくどんなmodeでも Cache-Control を付けなければいけない」というような事情で HeaderCacheControl を使っているユーザーが居るとしたら、それはそれで、今の場所で設定して上げる必要があると思う。
@Chieko Matsuo ありがとうございます。マージしました。
@Kenichi Ishigaki 失礼しました。見ていた箇所が少々違っていたことに気づきました。
コメントにあるすべての手順において、期待通りの表示が確認できました。
@Chieko Matsuo
手元の環境では問題なくヘッダが消えているように見えます。ログをダウンロードする前に開発者ツールのネットワークタブでログをクリアしてみていただけますか?
@Kenichi Ishigaki 以下の3か所のみ、期待した結果と違ったのですが、私の確認方法が間違っているだけかもしれないので、確認お願いします。確認方法が間違っているようでしたら、その旨教えて頂けると有難いです:
リストの3番目と6番目の「ログをダウンロードしたときには Cache-Control ヘッダがない」という部分、どちらもこんな具合に表示されました
最後から2番めの「Cache-Control ヘッダの値が ForceCacheControl に設定した値になっている」→ForceCacheControl ではなく、CacheControlに設定した内容が表示されました。
@Chieko Matsuo よろしくお願いします!
現状はデフォルトでは、キャッシュに関わるヘッダーは以下のみが出力されている。
Pragma: no-cache
現代的には、Pragmaではなくて、Cache-Controlが好ましいと思われる。
https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/Pragma
MTはCache-Controlを設定する環境変数を持っているが、初期値がundefであるため基本的には出ていない。
https://github.com/movabletype/movabletype/blob/develop/lib/MT/Core.pm#L1920
どうしていくか?
HeaderCacheControlの初期値を
private, no-store, no-cache, must-revalidate
などにしてもよいと思うが、ただ、HeaderCacheControl はrun
の中で常に出力する実装になっているが、https://github.com/movabletype/movabletype/blob/develop/lib/MT/App.pm#L3215-L3217
今回の目的でいうと、
set_no_cache
の中で出力する方がよいと思う。https://github.com/movabletype/movabletype/blob/develop/lib/MT/App.pm#L4619-L4628
いくつかのmodeでは set_no_cache を呼ばないようになっており、そこではやはり Cache-Control は付けない方がよいはず。
https://github.com/movabletype/movabletype/blob/develop/lib/MT/App/CMS.pm#L651-L657
ただ現状で「CDNを入れているので、とにかくどんなmodeでも Cache-Control を付けなければいけない」というような事情で HeaderCacheControl を使っているユーザーが居るとしたら、それはそれで、今の場所で設定して上げる必要があると思う。