我试图告诉 nginx 永久缓存我的一些资产(js、css),或者至少缓存很长时间。
这个想法是,一旦资产包使用/assets/
URI 前缀(例如/assets/foo-{fingerprint}.js
)编译和发布,它就会保留在那里并且永远不需要更改。
互联网告诉我我应该写下以下规则:
location ~ ^/assets/.*-([^.]+)\.(js|css)$ {
gzip_static on; # there's also a .gz of the asset
expires max;
add_header Cache-Control public;
add_header Last-Modified "";
add_header ETag "";
break;
}
我希望这会导致 HTTP 代码 304“未修改”的响应,但我得到的是每次一致的 HTTP 200(OK)。
我尝试了其他一些方法,例如:
a) 明确地将修改时间设置为过去的一个恒定时间点;
add_header Last-Modified "Thu, 01 Jan 1970 00:00:00 GMT";
b) 切换到If-None-Match
检查;
add_header ETag $1;
if_modified_since off;
但是,唯一真正根据需要起作用的是:
add_header Last-Modified "Thu, 01 Jan 2030 00:00:00 GMT";
if_modified_since before;
我迷路了。这与我认为正确的一切背道而驰。请帮忙。