浏览器显示200状态代码并显示为缓存

时间:2017-01-29 11:31:31

标签: caching nginx

我们正在使用nginx来提供静态文件。以下是配置:

# To serve files with version appended as ?v=0.2 etc. 
# for app level js and css only
location ~ ^/(assets/js/|assets/css/) {
  root /path/to/static/files/public;
  access_log off;
  expires max;
  try_files $uri $1;
}

# other static files
location ~ ^/(assets/|images/|favicon.ico) {
  root /path/to/static/files/public;
  access_log off;
  expires max;
}

现在我在浏览器中看到的有时它甚至会为缓存文件提供200个。有时会给出304. enter image description here

我启用了nginx访问日志,并确认即使状态代码为200,如果缓存,也不会访问nginx服务器。 但是为什么它为缓存文件提供200个状态代码而不是304?我的配置有什么问题吗?

1 个答案:

答案 0 :(得分:1)

这是预期的行为。

通过使用expires [some-date-in-the-future],您基本上告诉浏览器使用它的本地缓存来提供请求,直到达到该日期为止。 浏览器本地缓存以<{1}}响应回复,因为这是协议在成功获取资源时所期望的内容。

超过该日期,浏览器足够聪明,可以询问服务器,如果资源使用200 OK标头自上次访问后发生了更改。如果服务器回答If-Modified-Since,浏览器会愉快地再次使用其本地缓存中的版本。