对于你的上一个问题,为什么?我会尝试用我所知道的解释
用外行人的术语简要解释这三个状态代码 .
200 - 成功(浏览器请求并从服务器获取文件)
如果在服务器中启用了缓存
200(来自内存缓存) - 在浏览器中找到的文件,因此浏览器不会从服务器请求
304 - 浏览器请求文件但服务器拒绝该文件
对于某些文件,浏览器决定从服务器请求,而某些文件决定从存储(缓存)文件中读取 . 为什么是这样 ?每个文件都有一个到期日,所以
如果文件未过期,则浏览器将使用缓存(200缓存) .
如果文件已过期,浏览器会向服务器请求文件 . 两个位置(浏览器和服务器)的服务器检查文件 . 如果找到相同的文件,则服务器拒绝该请求 . 根据协议浏览器使用现有文件 .
看看这个nginx配置
location / {
add_header Cache-Control must-revalidate;
expires 60;
etag on;
...
}
此处的到期时间设置为60秒,因此所有静态文件都会缓存60秒 . 因此,如果您在60秒内再次请求文件,浏览器将从内存中读取(200内存) . 如果你在60秒后请求浏览器请求服务器(304) .
我假设文件在60秒后没有改变,在这种情况下你会得到200(即更新的文件将从服务器获取) .
因此,如果服务器配置了不同的过期和缓存标头(策略),则状态可能不同 .
在你使用cdn的情况下,cdn的主要目的是高可用性和快速交付 . 因此他们使用多个服务器 . 即使文件看起来像是在同一目录中,但如果这些服务器具有不同的配置,cdn可能会使用多个服务器来提供u内容 . 然后这些状态可能会改变 . 希望能帮助到你 .