キャッシュという わかりにくいもの

キャッシュの設定、はっきりと分かっていなかったので改めてまとめました。

まとめ

  • キャッシュは大きく分けて2種類(私用・共用)
  • max-age と s-maxage の違いに注意
  • no-cache と no-store の違いに注意
  • private と public の違いに注意
  • キャッシュの知識は超重要

キャッシュは大きく2種類

私用キャッシュ、共用キャッシュの2種類があります。
私用キャッシュは、だいたいブラウザキャッシュで、私達WEBエンジニアが「キャッシュクリアして確認して」と言われたらまずクリアするのがこのキャッシュです。

共用キャッシュは、中継者のキャッシュ、になります。
「中継者」には色々あり、例えば、社内・学内のHTTPプロキシや、CloudFlareやCloudFrontなどのCDNもこの中継者の中に入ります。基本的に共用(shared)と名前がついているだけに、みんなでキャッシュを共用して高速化するためのものです。

max-age と s-maxage の違い

私用、共用と2種類のキャッシュがありますが、どのキャッシュにどの時間、キャッシュをもたせるか。それを決めるのがmax-ageとs-maxageです。
私用、共用ともにmax-ageで設定できます。
s-maxage は 共用にのみ、作用します。(s- は おそらくsharedの略)
基本的に上記だけ気にすればいいのですが、例えばs-maxageのみ指定された場合、私用キャッシュはキャッシュされません。
max-age, s-maxage 両方していされれば、それぞれ私用、共用のキャッシュの時間が設定されます。
max-ageだけ設定された場合は、私用・共用、両方が設定されます。
そもそもキャッシュが大きく考えて2種類、ということを頭に入れておくことが大事です。

no-cache と no-store の違いは?

no-cache と no-store どちらも同じ意味に思えますが、ちょっと違います。
不思議なことに、no-cacheはキャッシュを取得します。
キャッシュを取得するのを拒否するときはno-storeを指定しましょう。
no-cacheは「サーバーに問い合わせてレスポンスに変更があったかどうかを確認する必要がある」ということのようです。cacheは結局とります 笑
キャッシュを取らせたくないときはno-storeを指定しましょう。

privateとpublicの違いは・・?

public は どのキャッシュでもレスポンスを保存して良いことを示します。これは、通常キャッシュできないHTTP認証やレスポンスステータスコードを伴うページをキャッシュしなければならないときに使います。

privateのほうは、共用キャッシュに保存してはいけないことを示します。私用キャッシュには保存されます。

色々他にも設定があって奥深い

キャッシュは基本知識ですがとても奥深く、その重要度は、サイトをサクサクユーザに見せたり、DBやアプリケーションサーバを守るには最重要レベルな知識だったりします。中継するものや到達するものが複数あるので、その設定は、サーバ側の設定、プログラムの設定、もしくはCDNの設定であったり、、奥が深いです。
どこか一部で設定したものがうまく反映されず、どこで差し込まれて望んでいたのと違う結果になっているのか、わかりにくく、ミスや事故なども起こりやすい部分でもあります。まずは基本的な動作と、そして、ちょっと意味分かりづらい各項目の意味づけを試しながら理解することが大事かと思います。

\フリーランス制作パートナー募集/

弊社パートナーとして、クリエイティブ制作・システム開発等、各分野で協力しあえるフリーランスのパートナー様を募集しております。詳細等、下記のフォームよりお気軽にお問い合わせくださいませ。スタッフ一同、パートナーシップを構築出来る方との出会いを楽しみにしております。

Related article

おすすめ関連記事