解决浏览器缓存导致获取不到最新前端代码问题

工作时遇到的问题,简单记录一下

问题描述:

项目打包部署到nginx后,浏览器刷新,获取不到最新代码,禁用浏览器缓存后再刷新才能拿到最新代码

问题产生原因

缓存问题,代码更新后没有去拿最新的代码而是拿了缓存

解决方案

一般情况下,我们希望合理使用缓存,达到的效果是:代码更新,自动获取更新后的代码;代码没更新,则采用缓存
拿单页应用来举例,为了实现以上效果,我们采用的策略是:
1.对于js文件,其文件名应该跟随代码的变动而发生更改,例如将文件内容的hash作为文件名的一部分。这样代码更新后,文件名也会自动更改,index.html只要引入最新名字的js文件,就不会去拿代码更新前的js缓存
2.对于index.html文件,不缓存。之所以这样是因为index.html包含了对js文件的引用,如果将index.html缓存,缓存中index.html引用的js文件名还是老的,因此即使打包后js名字变了,但由于缓存中index.html引用的js名字没变,因此还是会拿到缓存的js代码。并且index.html一般很小,不缓存也没什么问题

以上两点在实现上
1.参考以下webpack配置,使得打包后的js文件名带上内容hash

output: {
  chunkFilename: "[name].[contenthash].js",
  filename: "[name].[contenthash].js"
}

2.更改nginx配置文件nginx.conf,使得index.html不使用缓存

location / {
    try_files $uri $uri/ /index.html;
    expires -1;
    add_header Cache-Control "no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0";
}

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-18 16:34:05       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-18 16:34:05       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-18 16:34:05       58 阅读
  4. Python语言-面向对象

    2024-07-18 16:34:05       69 阅读

热门阅读

  1. 6Python的Pandas:数据读取与输出

    2024-07-18 16:34:05       23 阅读
  2. linux修改时区为CST

    2024-07-18 16:34:05       18 阅读
  3. 请求通过Spring Cloud Gateway 503

    2024-07-18 16:34:05       19 阅读
  4. 使用小皮面版的Nginx服务搭建本地服务器

    2024-07-18 16:34:05       22 阅读
  5. Jenkins 安装、部署与配置

    2024-07-18 16:34:05       23 阅读
  6. Nginx:502 Bad Gateway 错误的原因及解决方法

    2024-07-18 16:34:05       19 阅读
  7. Web开发-LinuxGit基础5-本地-分支

    2024-07-18 16:34:05       21 阅读
  8. 交易-软件科技股F4(kafka、NET、snow、MongoDB)

    2024-07-18 16:34:05       21 阅读
  9. 关于Hadoop生态系统一部分的Catalog

    2024-07-18 16:34:05       25 阅读
  10. 高内聚,低耦合的解释及实例【包学包会】

    2024-07-18 16:34:05       21 阅读
  11. 网页制作技术:概念、现状与展望?

    2024-07-18 16:34:05       20 阅读
  12. Ubuntu22.04:安装Samba

    2024-07-18 16:34:05       22 阅读
  13. 使用 Vue 和 ECharts 打造动态数据可视化图表

    2024-07-18 16:34:05       25 阅读
  14. 排序思想-快排

    2024-07-18 16:34:05       25 阅读