缓存控制标头-忽略查询参数

时间:2019-06-03 09:14:23

标签: node.js express caching cache-control

我正在为公司网站设置Cloudfront发行版。 我们想通过使用服务器端(带有Express的Node.Js)上的Cache-Control标头来设置缓存时间,如下所示:

if (req.url.startsWith('/static')) {
   res.setHeader('Cache-Control', 'public,max-age=500');
}

乍一看,这似乎效果很好,但是缓存的标准之一失败了,那就是忽略查询字符串参数。

例如,请求“ domain.com/static/logo”和“ domain.com/static/logo?foo=bar”应解释为同一资源,并缓存为一个资源。

我想知道是否有可能仅使用Cache-Control标头而忽略其查询字符串参数来缓存资源。

谢谢。

1 个答案:

答案 0 :(得分:1)

默认情况下,CloudFront会删除查询字符串,也不会考虑将其放入缓存中,这是CloudFront的默认行为,因此不会有基于不同查询字符串参数的多个缓存副本。 如果您似乎没有这种行为,则可能将“查询字符串”设置为“全部转发并根据CloudFront缓存行为中的调用进行缓存”。

https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/QueryStringParameters.html