通过浏览器或cURL请求JavaScript资源(libraries.js)时,我得到了一致的Cloudfront缓存未命中(X-Cache:来自Cloudfront的Miss)。该项的max-age,expires和cache-control标头都已正确设置。
当我检查回复时,我可以看到所有请求回复对 Via 属性都有不同的值:
curl -kv http://example.org/libraries.js (x5)
Cache-Control: max-age=172800
Expires: Thu, 22 Dec 2016 15:00:24 GMT
X-Cache: Miss from cloudfront
Via: 1.1 37af1xxxxxx8abe6.cloudfront.net (CloudFront)
X-Cache: Miss from cloudfront
Via: 1.1 1b52axxxxxxf467a.cloudfront.net (CloudFront)
X-Cache: Miss from cloudfront
Via: 1.1 ae162xxxxxxec67a.cloudfront.net (CloudFront)
X-Cache: Miss from cloudfront
Via: 1.1 ff555xxxxxx6cc33.cloudfront.net (CloudFront)
X-Cache: Miss from cloudfront
Via: 1.1 b9a8cxxxxxxf1ec8.cloudfront.net (CloudFront)
每个子域似乎在每个请求上都不同。 当我直接从节点地址(xxxxx.cloudfront.net)而不是我自己的域请求资源时,Cache成功命中,这使我相信每个via地址实际上是一个不同的边缘位置。
Cloudfront中子域的作用是什么?这是一个将请求重定向到Cloudfront的动态变量,还是实际上是边缘缓存的位置?
在我看来,没有一个请求是缓存命中,因为请求不在子域的缓存中,并且由于它不断通过不同的URL请求,因此很少从缓存中提供。
在Amazon Cloudfront文档中,我只能找到有关自定义子域的文档。