Open hysryt opened 2 years ago
max-age=<seconds>
- キャッシュの有効期間。s-maxage=<seconds>
- 共有キャッシュ用のキャッシュの有効期間。max-age
より優先される。no-cache
- 名前が紛らわしいがキャッシュはされる。ただしキャッシュされたデータを使用する前にデータが有効かどうかをサーバーに問い合わせる必要がある。キャッシュをさせない場合は no-store
を使用する。no-store
- キャッシュしてはならないことを表す。must-revalidate
- キャッシュが古くなったらキャッシュが有効かどうかをサーバーに問い合わせる必要があることを表す。mod_headers
を使用する。
header set
- ヘッダーを設定する。同名のヘッダーがある場合は上書き。header append
- 同名のヘッダーにヘッダー値をコンマ区切りで追加する。同名のヘッダーがない場合は新規追加。header add
- ヘッダーを追加する。同名のヘッダーがあっても新規追加。header unset
- ヘッダーを削除する。206 Partial Content
- Range付きのリクエストが成功して部分的なレスポンスボディを返すときのステータスコード。動画配信など。502 Bad Gateway
- CDNやProxyとオリジンの間に問題があることを表すステータスコード。名前に反して、オリジンの方に問題があることが多いらしい。504 Gateway Timeout
- CDNからオリジンの間のレスポンスが遅い場合などに返されるステータスコード。no-store
を指定すれば回避できたかも)cache-control
ヘッダで max-age=0
を送信すると、「指定された秒数を超えるキャッシュを受け付けない」という指定になるらしい(意味がよくわからない)
max-age=0
を送信する
max-age
- レスポンスを生成した時点からの残りの有効期間の秒数。実際の実装ではクライアントがリクエストを開始してからの秒数として使用されることが多いらしい。s-maxage
- 経路上のキャッシュのみに有効なmax-agestale-while-revalidate
- 再検証を行なっている間に古いキャッシュを使うことを許容する期限stale-if-error
- 再検証でエラー(オリジンがダウンしている時など)が起きた際に古いキャッシュを使うことを許容する期限。現時点では対応しているブラウザは少ないらしい。Cache-Control: max-age
の方が優先される。Cache-Control: max-age
を理解しないクライアントようらしいCache-Control: max-age
を理解するno-store
に加え、経路上にキャッシュさせないための private
、もしキャッシュがあっても再検証を必要とさせる no-cache
を指定すると良い。この本の中では must-revalidate
も推奨している。no-store
以外を指定するのは悪い例と書かれているが、現状のCDNの実装などを見ると no-store
だけでは心許ないらしい。If-Modified-Since
ヘッダ - キャッシュのLast-Modifiedヘッダを値として使用する。更新がある場合はコンテンツを送るよう指示するヘッダIf-None-Match
- キャッシュのETagヘッダを値として使用する。一致しなかったらコンテンツを送るよう指示する。If-Modified-Since
と If-None-Match
を両方指定した場合は If-None-Match
が優先される。304 Not Modified
となる。
2章