我正在创建一个 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。