设置除主页 URL 之外的所有静态数据的过期时间

设置除主页 URL 之外的所有静态数据的过期时间

我正在创建一个 spa 网站,现在对于静态数据(javascript),我希望以某种方式设置标题,使其仅在一定时间后过期。

但是为了方便更新,我希望不是在主页上执行此操作。(每个新版本都会重命名捆绑的 javascript,因此缓存将以这种方式失效)。

我的网站数据有以下片段:

location /api {
    proxy_pass  http://${DYNAMIC_SERVER}:${DYNAMIC_PORT};
}

location / {
    # redirect everything to show the main SPA application
    try_files $uri $uri/ /index.html;
    expires 7d;
}

这缓存一切,包括index.html——我该如何防止这种情况发生?

答案1

要禁用任何 URI 上的缓存,才不是解析为静态文件,但内部重写/index.html您将需要添加一个单独的location块来处理该URI。

例如:

location / {
    expires 7d;
    try_files $uri $uri/ /index.html;
}
location = /index.html {
    expires -1;
}

Nginx 选择一个location块来处理原始请求的 URI。该try_files语句导致该 URI 成为内部重写如果它与静态文件或目录不匹配,Nginx 将重新开始搜索块location来处理重写的 URI。

相关内容