nginx ngnix expires header using map does not work when reloading the page

xbp102n0  于 2023-10-17  发布在  Nginx
关注(0)|答案(1)|浏览(122)

我有一个单页应用程序,我不希望index.html文件被缓存(因为如果有一个新版本,用户将无法获得它,因为他们的浏览器将获得缓存的index.html,该文件链接到旧的JavaScript文件,编译器输出)。
我定义了我的模板,看起来像这样:

map $sent_http_content_type $expires {
 text/html epoch;
 default 1y;
}

server {
 listen $PORT;
 ...
 location / {
   add_header Access-Control-Allow-Origin *;
   try_files $uri /index.html;
   sendfile on;
   expires $expires;
   tcp_nopush on;
   gzip on;
   gzip_types text/html application/javascript text/css;
 }
 ...
}

当第一次加载index.html页面时,expires头被正确设置,但是当进行软重新加载时,expires日期被设置为一年。会有什么问题呢?
编辑:我注意到,当第一次加载页面/硬重新加载时,在获取index.html的响应头中有内容类型的text/html,但当重新加载时,这个头根本不存在,这可能是问题吗?

deyfvvtc

deyfvvtc1#

好吧,我自己找到了答案--应该使用缓存控制头而不是过期头。

相关问题