客户端第一次向服务器成功发送请求,服务器会把内容返回给客户端,状态码是200,且会标记内容修改时间,生成一个ETag标记,用来核实内容是否修改过。等下次同一客户端再次发送请求,会根据请求标记的修改时间,通过ETag标记判断文件内容在这期间是否修改过。如果没有修改过,则返回304状态码。客户端直接加载缓存内容,如果文件内容修改过则把最新内容返回给客户端,并返回最新文件修改时间和ETag。返回304状态码示例如下。
浏览器客户端第一次访问一个图片,请求成功,服务器返回200状态码,Response Header响应包里会包含Last-Modified最近修改时间和ETag。
当客户端再次访问时,会在请求头中加上之前读取内容的修改时间和ETag,如下图所示,服务器会根据ETag和Last-modified判断内容最近有没有修改过。如果没有修改,则返回304状态码,如果修改过,则把最新内容返回客户端,状态码则是200。
所以有时候服务器相关日志文件、CDN日志文件和OSS日志文件都会有304状态码,这属于正常情况,说明缓存中已经存在这些内容,并且在此期间中这些内容并没有修改,如果想更新缓存,可以按 Ctrl + F5 键,客户端会清除缓存,重新向服务器发送请求,服务器则返回请求内容,并且状态码是200。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。