【问题标题】:Browser showing 200 status code and showing as cached浏览器显示 200 状态代码并显示为缓存
【发布时间】:2017-01-29 11:31:31
【问题描述】:

我们使用 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。

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

【问题讨论】:

    标签: caching nginx


    【解决方案1】:

    这是预期的行为。

    通过使用expires [some-date-in-the-future],您基本上是在告诉浏览器使用它的本地缓存来处理请求,直到达到该日期。 浏览器本地缓存 answers 带有 200 OK 响应,因为这是协议在成功获取资源时所期望的。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-12
      • 2020-12-11
      • 2012-04-23
      • 2012-02-17
      相关资源
      最近更新 更多