Angular 中 nginx 设置缓存

最近在公司 Angular 项目中用 nginx 部署项目遇到一些问题,在此记录一下:

想利用 nginx 服务器进行一些缓存操作

location / {
  expires 1y;
  add_header Cache-Control  max-age=86400;
}

表示整个项目如果如果没有更新的话,从浏览器缓存中读取,对于静态资源来说,这样做的好处是节省流量,提高访问速度。

但是这样会遇到一个问题,就是如果发布新版本的话,因为 index.html 文件也进行了缓存,那么会造成服务器中的版本和浏览器中的版本不一致,也就是没有更新,当然 ctrl + F5 可以进行强制拉取新版本,但这对于用户来说是一种不好的体验。

解决办法:
1. 我们只需要把index.html 不进行缓存操作,每次都从服务器中读取,这样就能保证时刻都是最新版本了。
2. 在 index.html 中加入如下 meta 标签:

<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />

3. 也可以在 nginx 中设置,如:

location /=index.html {
  expires 0;
  add_header Cache-Control no-cache;
}

这样 index.html页面就能保证可以取到最新的了,当然没有最新的也会从缓存中读取,返回 304

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 本文所介绍的环境是:操作系统:CenOS-7-x86_64环境:虚拟机Nginx 版本:1.6.3 一、Nginx...
    FlySheep_ly阅读 12,915评论 1 40
  • 0.网站页面访问:a.网站页面访问流程:01.客户端 浏览器输入网址信息点击回车02.客户端 完成域名的解析过...
    噬魂老妖阅读 2,286评论 0 1
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,281评论 19 139
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 12,240评论 16 22
  • 今天感恩节哎,感谢一直在我身边的亲朋好友。感恩相遇!感恩不离不弃。 中午开了第一次的党会,身份的转变要...
    余生动听阅读 13,613评论 0 11

友情链接更多精彩内容