仅为所选文件定义特定的缓存控制 header
Define specific cache control header for selected file only
我正在按照 https://www.gatsbyjs.org/docs/caching/ 上的建议为 Gatsby 设置 Nginx 服务器(版本 1.17.1)。
下面的代码片段是我 server {}
阻止尝试实施推荐的缓存配置的部分;
location ~* \.(?:html)$ {
add_header Cache-Control "public, max-age=0, must-revalidate";
}
location /static {
add_header Cache-Control "public, max-age=31536000, immutable";
}
location ~* \.(?:css|js)$ {
add_header Cache-Control "public, max-age=31536000, immutable";
}
location /sw\.js {
add_header Cache-Control "public, max-age=0, must-revalidate";
}
同样尝试了 if statement in place of the location {}
块来定义服务工作者文件的缓存配置,sw.js
,如下所示;
if ($request_uri ~ ^sw\.(?:js)$) {
set $no_cache 1;
}
不幸的是,除了 sw.js
.
之外,所有文件都按预期成功缓存
我做错了什么,我该如何解决才能有效地将 sw.js
的缓存控制 header 设置为 public, max-age=0, must-revalidate
?
这里描述location
的优先顺序https://nginx.org/en/docs/http/ngx_http_core_module.html#location
当找到完全匹配项(使用 =
修饰符)时,搜索将终止并且不会检查正则表达式,因此您可以将其用于 sw.js
:
location = /sw.js {
add_header Cache-Control "public, max-age=0, must-revalidate";
}
我最终得到了以下关于 Gatsby.js 缓存的 nginx 配置:
location ~* \.(?:html)$ {
add_header Cache-Control "public, max-age=0, must-revalidate";
}
location /page-data {
add_header Cache-Control "public, max-age=0, must-revalidate";
}
location = /sw.js {
add_header Cache-Control "public, max-age=0, must-revalidate";
}
location /static {
add_header Cache-Control "public, max-age=31536000, immutable";
}
location ~* \.(?:js|css)$ {
add_header Cache-Control "public, max-age=31536000, immutable";
}
@OP:你最后用的是什么配置?毕竟,也许您可以编辑此答案以匹配完美的解决方案;对于搜索 "caching nginx gatsby".
的人
我正在按照 https://www.gatsbyjs.org/docs/caching/ 上的建议为 Gatsby 设置 Nginx 服务器(版本 1.17.1)。
下面的代码片段是我 server {}
阻止尝试实施推荐的缓存配置的部分;
location ~* \.(?:html)$ {
add_header Cache-Control "public, max-age=0, must-revalidate";
}
location /static {
add_header Cache-Control "public, max-age=31536000, immutable";
}
location ~* \.(?:css|js)$ {
add_header Cache-Control "public, max-age=31536000, immutable";
}
location /sw\.js {
add_header Cache-Control "public, max-age=0, must-revalidate";
}
同样尝试了 if statement in place of the location {}
块来定义服务工作者文件的缓存配置,sw.js
,如下所示;
if ($request_uri ~ ^sw\.(?:js)$) {
set $no_cache 1;
}
不幸的是,除了 sw.js
.
我做错了什么,我该如何解决才能有效地将 sw.js
的缓存控制 header 设置为 public, max-age=0, must-revalidate
?
这里描述location
的优先顺序https://nginx.org/en/docs/http/ngx_http_core_module.html#location
当找到完全匹配项(使用 =
修饰符)时,搜索将终止并且不会检查正则表达式,因此您可以将其用于 sw.js
:
location = /sw.js {
add_header Cache-Control "public, max-age=0, must-revalidate";
}
我最终得到了以下关于 Gatsby.js 缓存的 nginx 配置:
location ~* \.(?:html)$ {
add_header Cache-Control "public, max-age=0, must-revalidate";
}
location /page-data {
add_header Cache-Control "public, max-age=0, must-revalidate";
}
location = /sw.js {
add_header Cache-Control "public, max-age=0, must-revalidate";
}
location /static {
add_header Cache-Control "public, max-age=31536000, immutable";
}
location ~* \.(?:js|css)$ {
add_header Cache-Control "public, max-age=31536000, immutable";
}
@OP:你最后用的是什么配置?毕竟,也许您可以编辑此答案以匹配完美的解决方案;对于搜索 "caching nginx gatsby".
的人