管理画面のキャッシュ無用のコンテンツにCache-Control レスポンスヘッダも設定できるようにする

Description

現状はデフォルトでは、キャッシュに関わるヘッダーは以下のみが出力されている。

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 を使っているユーザーが居るとしたら、それはそれで、今の場所で設定して上げる必要があると思う。

Checklists

None

Attachments

1
  • 02 Apr 2024, 07:43 AM

Activity

Show:

Kenichi IshigakiApril 4, 2024 at 3:27 AM

ありがとうございます。マージしました。

Chieko MatsuoApril 4, 2024 at 12:53 AM

失礼しました。見ていた箇所が少々違っていたことに気づきました。

コメントにあるすべての手順において、期待通りの表示が確認できました。

Kenichi IshigakiApril 3, 2024 at 7:20 AM

手元の環境では問題なくヘッダが消えているように見えます。ログをダウンロードする前に開発者ツールのネットワークタブでログをクリアしてみていただけますか?

Chieko MatsuoApril 2, 2024 at 7:43 AM

以下の3か所のみ、期待した結果と違ったのですが、私の確認方法が間違っているだけかもしれないので、確認お願いします。確認方法が間違っているようでしたら、その旨教えて頂けると有難いです:

  • リストの3番目と6番目の「ログをダウンロードしたときには Cache-Control ヘッダがない」という部分、どちらもこんな具合に表示されました

    ログ一覧_DL.png
  • 最後から2番めの「Cache-Control ヘッダの値が ForceCacheControl に設定した値になっている」→ForceCacheControl ではなく、CacheControlに設定した内容が表示されました。

Reiko SatoMarch 28, 2024 at 11:58 PM


よろしくお願いします!

Implemented

Details

Assignee

Reporter

Fix versions

Priority

Smart Checklist

Created April 5, 2022 at 3:03 AM
Updated May 10, 2024 at 4:54 AM
Resolved April 4, 2024 at 3:27 AM