如何排查使用CDN加速后访问资源返回304状态码问题

问题描述

通过 CDN 加速后访问资源,出现 304 状态码,我们该如何排查此类问题。

问题分析

客户端第一次向服务器成功发送请求,服务器会把内容返回给客户端,状态码是200,且会标记内容修改时间,生成一个ETag标记,用来核实内容是否修改过。等下次同一客户端再次发送请求,会根据请求标记的修改时间,通过ETag标记判断文件内容在这期间是否修改过。如果没有修改过,则返回304状态码,客户端直接加载缓存内容。如果文件内容修改过则把最新内容返回给客户端,并返回最新文件修改时间和ETag。

1.浏览器客户端第一次访问一个图片,请求成功,服务器返回200状态码,Response Header 响应包里会包含 Last-Modified 最近修改时间和 ETag。如下图所示 alt

2.当客户端再次访问时,会在请求头中加上之前读取内容的修改时间和 ETag,如下图所示,服务器会根据 ETag 和 Last-modified 判断内容最近有没有修改过。如果没有修改,则返回304状态码;如果修改过,则把最新内容返回客户端,状态码则是200。 alt

根据以上情况,服务器日志文件、CDN 日志文件和源站日志文件存在 304 状态码是属于正常情况,说明缓存中已经存在这些内容,并且在此期间中这些内容并没有修改。如果想更新缓存,可以按 Ctrl + F5 键强制刷新缓存,客户端会清除缓存,重新向服务器发送请求,服务器则返回请求内容,并且状态码是200。

如果您有其他问题,欢迎您联系火山引擎技术支持服务

111
0
0
0
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论