Expires
概要
Expiresとは、「有効期限が切れる」「失効する」などの意味の英単語で、通信プロトコルなどの設定値などでデータの有効期限を表す。CookieのExpires属性、HTTPヘッダのExpiresヘッダフィールドがよく知られる。CookieのExpires属性
WebサーバとWebブラウザの間でやり取りされるCookie(クッキー)に有効期限を設定するには「Expires」属性を指定する。
CookieはWebコンテンツの伝送に用いられるHTTP(Hypertext Transfer Protocol)に用意された仕組みの一つで、サーバからの応答時に任意の文字列データを付与し、クライアントがこれを保管してサーバへのリクエスト時に毎回送信する。サーバがクライアントを識別したり、クライアント側で必要な情報を保管することができる。
Expires属性はCookieの有効期限を表し、期限を過ぎるとそのCookieは破棄される。サーバからCookieを発行する際に「Set-Cookie:」ヘッダで指定することができ、Cookie文字列本体や他の属性と「;」(セミコロン)で区切って「;Expires=日時を表す文字列;」のように指定する。クライアント側でJavaScriptなどを通じて書き換えることもできる。
日時の形式は「Sun, 01 Jan 2023 12:34:56 GMT」のように「曜日, 日 月名 西暦 時:分:秒 GMT」の形式で記される。時刻表示にタイムゾーンは使用できず、経度0度におけるグリニッジ標準時(GMT/UTC)に変換しなければならない。
なお、値として0や過去の日時を指定すると、すでに期限を超過しているとみなされ即座にCookieは破棄される。また、無指定の場合には最後のアクセスから一定の時間(ブラウザごとに異なる)が経過するかブラウザを終了すると消去される「セッションCookie」として取り扱われる。Cookieには「Max-Age属性」で有効期限(受信時からの経過秒数)を指定する方法もある。
HTTPヘッダのExpires
HTTPヘッダのフィールド(項目)の一つで、送信したデータをクライアント側でキャッシュ保管する際の有効期限を指定するものをExpiresという。期限が切れる日付/時刻を指定する。
WebサーバはWebブラウザなどのクライアントの求めに応じてファイルなどのデータを送信するが、同じデータを毎回送り直すのは回線資源の無駄であるため、一度受信したデータはクライアント側のストレージに保管しておき、次に呼び出されたときはストレージから読み込む「キャッシュ」という仕組みがある。
Expiresヘッダフィールドはサーバがクライアントに送信するHTTPレスポンスに記載される項目の一つで、送信したデータをキャッシュ保管する際の有効期限を指示する。値はCookieの場合と同じように「曜日, 日 月名 西暦 時:分:秒 GMT」の形式でグリニッジ標準時に変換した日時を記す。
クライアントはExpiresで指定された期限が来るとキャッシュを破棄し、またそのデータが必要になったら改めてWebサーバから取り寄せる。値として「0」や過去の日時などを指定すると、すでに期限切れとみなされキャッシュに保存しないことになっている。新たに策定された「Cache-Control」ヘッダフィールドの方が機能が豊富で、現在ではこちらを用いることが多い。