はじめに
Amazon CloudFrontは、コンテンツをエッジロケーションにキャッシュすることで、オリジンの負荷軽減とレイテンシー(遅延)低減を実現します。
ただ、ファイルによってはキャッシュさせたくない場合もあります。
今回は、特定のファイルだけキャッシュさせない方法を紹介します。
キャッシュさせない方法
今回は下記の方法を紹介します。
- ①S3のオブジェクトのメタデータに
Cache-Control:no-cache, no-storeを追加し、最小TTLが0のキャッシュポリシーをビヘイビアに設定する方法 - ②キャッシュさせたくないファイルの拡張子やパスをCloudFrontのビヘイビアで定義する方法
それぞれの方法について確認していきます。
①S3の対象ファイルのメタデータに Cache-Control:no-cache, no-storeを追加し、最小TTLが0のキャッシュポリシーをビヘイビアに設定する方法
この方法は、S3の対象ファイルのメタデータにCache-Control:no-cache, no-storeを追加することで、対象のファイルのみCloudFrontへキャッシュされないようにする方法です。
- キャッシュさせたくないファイルを
no-cache.html - キャッシュさせたいファイルを
cache.html
とします。
no-cache.htmlのみ、メタデータにCache-Control:no-cache, no-storeを追加
no-cache.html

cache.html

続いて、CloudFront側で最小TTLが0のキャッシュポリシーを作成します。

作成したキャッシュポリシーをビヘイビアで設定します。

curlで確認してみます。
no-cache.htmlは X-Cache: Miss from cloudfrontが返却されているので、キャッシュされていないことが確認できます。
(※数回実行しても、Miss from cloudfrontであることを確認)
$ curl -I https://<ディストリビューションドメイン名>/no-cache.html HTTP/1.1 200 OK Content-Type: text/html Content-Length: 17 Connection: keep-alive Server: AmazonS3 Date: Wed, 07 Oct 2026 09:25:47 GMT Last-Modified: Wed, 07 Oct 2026 09:07:43 GMT ETag: "3802eff38f66e2145b0200f68a4589f0" x-amz-server-side-encryption: AES256 Cache-Control: no-cache, no-store Accept-Ranges: bytes X-Cache: Miss from cloudfront Via: 1.1 72d9ba3d54f570deafdd1986f3a86b4e.cloudfront.net (CloudFront) X-Amz-Cf-Pop: KIX82-P6 X-Amz-Cf-Id: vZ3Oeujpp0LWfQsVpT2ltpkdvu_OUvJX7e8mrUGkWzFAO6sViSfo7w== $
cache.htmlは X-Cache: Hit from cloudfrontが返却されているので、キャッシュされていることが確認できます。
(※初回実行時はキャッシュされていないので数回実行してHit from cloudfrontになることを確認)
$ curl -I https://<ディストリビューションドメイン名>/cache.html HTTP/1.1 200 OK Content-Type: text/html Content-Length: 14 Connection: keep-alive Server: AmazonS3 Date: Wed, 07 Oct 2026 09:13:07 GMT Last-Modified: Wed, 07 Oct 2026 09:08:58 GMT ETag: "0af072f6b0ff3da9beff2970931d5d3f" x-amz-server-side-encryption: AES256 Accept-Ranges: bytes X-Cache: Hit from cloudfront Via: 1.1 c514b866575b1e07824b81570de22b3e.cloudfront.net (CloudFront) X-Amz-Cf-Pop: KIX82-P6 X-Amz-Cf-Id: 2Ho5rfIlOjHsPeBxVrf3XqLRW5wW0eoI8XjyICAo04TDED39I3xRiw== Age: 547 $
②キャッシュさせたくないパスやファイルの拡張子をCloudFrontのビヘイビアで定義する方法
この方法は、特定のパス配下やファイル拡張子を指定したビヘイビアを作成し、キャッシュポリシーでCachingDisabledを指定し、キャッシュをさせないようにする方法です。
/no-cache/配下のファイルはキャッシュさせない/cache/配下のファイルはキャッシュさせる
とします
S3に/no-cache/フォルダと /cache/フォルダを作成し、それぞれ同じファイル test.htmlを配置します
/no-cache/

/cache/

CloudFrontで、パスパターンが/no-cache/*のビヘイビアと /cache/* ビヘイビアを作成します
パスパターンが/no-cache/*のビヘイビアのみキャッシュポリシーをCachingDisabledに設定します

curlで確認します。
/no-cache/test.htmlの方は、キャッシュされていないことが確認できます。
(※数回実行しても、Miss from cloudfrontであることを確認)
$ curl -I https://<ディストリビューションドメイン名>/no-cache/test.html HTTP/1.1 200 OK Content-Type: text/html Content-Length: 13 Connection: keep-alive Server: AmazonS3 Date: Wed, 07 Oct 2026 10:06:56 GMT Last-Modified: Wed, 07 Oct 2026 07:24:32 GMT ETag: "d4843947f74305a3747dfcc0d25a38fe" x-amz-server-side-encryption: AES256 Accept-Ranges: bytes X-Cache: Miss from cloudfront Via: 1.1 9ad1b57766a7dade003c96aca80feb12.cloudfront.net (CloudFront) X-Amz-Cf-Pop: KIX82-P6 X-Amz-Cf-Id: KPvZ3BLYyf9_q19GZ0PSt0Dj1hVm6X8Dqq8tzYT4o-LpIN6fkbzsqg== $
/cache/test.htmlの方は、キャッシュされていることが確認できます。
(※初回実行時はキャッシュされていないので数回実行してHit from cloudfrontになることを確認)
$ curl -I https://<ディストリビューションドメイン名>/cache/test.html HTTP/1.1 200 OK Content-Type: text/html Content-Length: 13 Connection: keep-alive Server: AmazonS3 Date: Wed, 07 Oct 2026 10:08:08 GMT Last-Modified: Wed, 07 Oct 2026 07:24:47 GMT ETag: "d4843947f74305a3747dfcc0d25a38fe" x-amz-server-side-encryption: AES256 Accept-Ranges: bytes X-Cache: Hit from cloudfront Via: 1.1 90bb233b934e3e63efb14c8734c7c4cc.cloudfront.net (CloudFront) X-Amz-Cf-Pop: NRT20-P8 X-Amz-Cf-Id: qnkgkIheWTavR7C_7VQyNBgvGTQXmuYLiG0aOKtHPkesQH1ak-WQNg== Age: 4 $
まとめ
今回は、Amazon CloudFrontで特定のファイルのみキャッシュさせない2つの方法を紹介しました。
用途に応じて、以下のように使い分けると良いと思います。
- 同じパス配下で、ファイルごとにキャッシュの有無を分けたい場合は①(S3メタデータ+最小TTL=0のキャッシュポリシー)
- 特定のパスやファイル拡張子をまとめてキャッシュさせたくない場合は②(CachingDisabledのビヘイビア)
参考
https://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/ConfiguringCaching.html
https://repost.aws/ja/knowledge-center/prevent-cloudfront-from-caching-files