Azure Front-door配置Cache-Control后始终返回TCP_MISS问题咨询
以下是你可能忽略的配置项:
检查Front Door的缓存规则是否覆盖源站标头
若你在Front Door中配置了自定义缓存规则,比如开启了Cache duration override(缓存时长覆盖),或者勾选了Ignore origin Cache-Control headers(忽略源站缓存标头),会直接覆盖源站返回的Cache-Control值,导致缓存不生效,出现TCP_MISS。需确认这类规则是否存在,禁用不必要的覆盖设置。验证请求是否携带不可缓存的标头
请求中如果带有Authorization、Cookie等标头,默认情况下Front Door不会缓存这类请求(除非你在缓存规则中明确允许)。检查Postman请求是否携带这类标头,若有,需调整缓存规则里的Cache key query string或Cache key headers配置,允许缓存包含这些标头的请求。确认源站是否返回冲突的缓存标头
若源站同时返回Pragma: no-cache或者Expires(且时间早于当前时间),会和Cache-Control指令冲突,Front Door可能优先遵循禁止缓存的规则,导致内容不被缓存。检查源站响应头是否包含这些标头,若有需移除。检查路由规则的缓存开关状态
确认对应路由规则的缓存功能是否开启(Front Door默认对静态内容开启缓存,但手动关闭后会导致所有请求不缓存)。在路由规则的Cache选项中,确保Enable caching处于开启状态。验证内容类型是否允许缓存
部分动态内容(如Content-Type为application/json、text/html等),Front Door默认可能不缓存,除非你在缓存规则中指定允许缓存这些内容类型。检查源站返回的Content-Type,若属于这类,需在缓存规则中添加对应类型并设置缓存时长。确认请求方法是否为可缓存类型
Front Door默认只缓存GET和HEAD请求,POST、PUT等请求不会被缓存,自然会显示TCP_MISS。确认你的请求方法是否为GET或HEAD。
内容的提问来源于stack exchange,提问作者Veselin Vasilev

