キャッシュ無効化

キャッシュ無効化(英: Cache invalidation)はコンピュータ・システムのプロセスであり、それによってキャッシュ内のエントリが置換もしくは削除される。

これはキャッシュ・コヒーレンシ・プロトコルの一部として、明示的に行なわれ得る。そのような場合、プロセッサはメモリ位置を変更したのち、そのメモリ位置にあったキャッシュされたをコンピュータ・システム全体に渡って無効化する。

明示的な無効化

キャッシュ無効化 を使用すると新しいコンテンツをクライアントプッシュすることが可能になる。この方法は接続されたクライアントに新しいコンテンツを表示する他の手段の代替として機能する。無効化 はアプリケーション・データを変更すること、すなわちクライアントによって受信された情報を期限切れとして次々にマークすることによって実行される。キャッシュが無効化されたのち、クライアントがキャッシュを要求した場合、新しいバージョンが配信される[1]

方法論

キャッシュを無効にするには具体的に3つの方法があるが、全てのキャッシング・プロキシ英語版がこれらの方法をサポートしている訳では無い。

追放

直ちにキャッシング・プロキシからコンテンツを削除する。クライアントが再度データを要求する時、それはアプリケーションからフェッチ英語版され、そしてキャッシング・プロキシに格納される。この方法はキャッシュされたコンテンツの全てのバリアントを削除する[1]

更新

例えもしキャッシュされたコンテンツが利用可能であったとしても、アプリケーションから要求されたコンテンツをフェッチさせる。以前キャッシュに格納されたコンテンツはアプリケーションからの新しいバージョンで置換される。 この方法はキャッシュされたコンテンツの内1つのバリアント(変異体もしくは亜種)に限り影響を及ぼす[1]

禁止

キャッシュされたコンテンツへの参照はブラックリスト英語版(または禁止リスト)に追加される。その後クライアント要求はこのブラックリストに対してチェックされ、そしてもし要求が一致するならば、新しいコンテンツがアプリケーションからフェッチされ、クライアントに返され、そしてキャッシュに追加される[1]

この方法は(追放とは異なり)キャッシング・プロキシからキャッシュされたコンテンツを直ちに削除しない。その代わり、キャッシュされたコンテンツはクライアントが特定の情報を要求したのちに更新される。

代替手段

キャッシュ無効化に対して、更新されたコンテンツをクライアントに配信し続ける、代替手段が3つある。1つ目は、生存期間(TTL: time-to-live)を非常に低い値に減らすことにより、キャッシュされたコンテンツを素早く破棄することである。2つ目は、キャッシュされたコンテンツをリクエスト毎に検証することである。3つ目は、クライアントによって要求された揮発性コンテンツをキャッシュしないことである。これらの代替手段は、より頻繁に情報を要求するがゆえアプリケーションに高負荷を生み出すため、問題を引き起こす可能性がある[1]

欠点

複数のオブジェクトを無効化する場合、無効化を用いて新しいコンテンツを転送するのは難しいかもしれない。複数の描写を無効化することは、アプリケーションに対して(実装の)複雑さのレベルを増加させる。

キャッシュ無効化はキャッシング・プロキシを介して実行されなければならない; これらの要求はキャッシング・プロキシの性能に影響を与える可能性があり、クライアントへの情報転送速度をより遅くする原因となる[1]

関連項目

脚注

出典

  1. ^ a b c d e f An Introduction to Cache Invalidation — FOSHttpCache Documentation”. foshttpcache.readthedocs.org. 2016年1月2日閲覧。