我们正在使用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?我的配置有什么问题吗?
答案 0 :(得分:1)
这是预期的行为。
通过使用expires [some-date-in-the-future]
,您基本上告诉浏览器使用它的本地缓存来提供请求,直到达到该日期为止。
浏览器本地缓存以<{1}}响应回复,因为这是协议在成功获取资源时所期望的内容。
超过该日期,浏览器足够聪明,可以询问服务器,如果资源使用200 OK
标头自上次访问后发生了更改。如果服务器回答If-Modified-Since
,浏览器会愉快地再次使用其本地缓存中的版本。