使用CDN加速域名后访问资源返回304状态码

概述

本文主要介绍使用CDN加速域名后,访问资源有时会返回304状态码的相关介绍。

 

详细信息

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

  1. 浏览器客户端第一次访问一个图片,请求成功,服务器返回200状态码,Response Header响应包里会包含Last-Modified最近修改时间和ETag。
  2. 当客户端再次访问时,会在请求头中加上之前读取内容的修改时间和ETag,如下图所示,服务器会根据ETag和Last-modified判断内容最近有没有修改过。如果没有修改,则返回304状态码,如果修改过,则把最新内容返回客户端,状态码则是200。
  3. 所以有时候服务器相关日志文件、CDN日志文件和OSS日志文件都会有304状态码,这属于正常情况,说明缓存中已经存在这些内容,并且在此期间中这些内容并没有修改,如果想更新缓存,可以按 Ctrl + F5 键,客户端会清除缓存,重新向服务器发送请求,服务器则返回请求内容,并且状态码是200。

 

适用于

  • CDN