首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在react中防止浏览器缓存文件最佳解决方案是什么

在react中防止浏览器缓存文件最佳解决方案是什么
EN

Stack Overflow用户
提问于 2020-08-30 14:43:57
回答 2查看 1.5K关注 0票数 0

我的问题是,当我部署新版本的react web生产时,一些用户浏览器显示以前部署的旧版本,我的用户必须按ctrl+f5清除缓存浏览器,然后我想哪一个不好的解决方案,请给我建议最好的解决方案谢谢兄弟。

EN

回答 2

Stack Overflow用户

发布于 2020-08-30 16:09:35

这可能是因为您的web服务器正在设置缓存控制响应标头,该标头被设置为较大的值。你能检查一下devtools中的值吗?

缓存控制的作用的一个简单解释是,它告诉浏览器,浏览器最多可以使用n分钟的缓存资源。因此,只有在n分钟之后,浏览器才会发送对该资源的新请求。

由于您有一个react应用程序( web应用程序),因此浏览器请求index.html,然后它将为您的react应用程序获取js包。

当您推送更新的版本时,浏览器不知道有更新。由于index.html已被缓存,因此它将继续使用它。直到缓存时间到期,然后它将再次获取,这一次它将获得最新的js包。

根据您的服务器,您需要弄清楚如何将index.html的cache-control头设置为值no-cache。下面是我如何在firebase主机中设置它的一个示例,

代码语言:javascript
复制
{
  "firestore": {
    "rules": "firestore.rules",
    "indexes": "firestore.indexes.json"
  },
  "functions": {
    "predeploy": [
      "npm --prefix \"$RESOURCE_DIR\" run lint",
      "npm --prefix \"$RESOURCE_DIR\" run build"
    ]
  },
  "hosting": {
    "public": "build",
    "ignore": ["firebase.json", "**/.*", "**/node_modules/**"],
    "headers": [
      {
        "source": "/service-worker.js",
        "headers": [{ "key": "Cache-Control", "value": "no-cache" }]
      },
      {
        "source": "/index.html",
        "headers": [{ "key": "Cache-Control", "value": "no-cache" }]
      },
      {
        "source": "/static/**/*",
        "headers": [
          {
            "key": "Cache-Control",
            "value": "max-age=31536000"
          }
        ]
      }
    ],
    "rewrites": [
      {
        "source": "**",
        "destination": "/index.html"
      }
    ]
  }
}

由于create react应用程序会自动将webpack构建配置为在文件名中生成具有不同散列的静态文件,因此可以为其设置较大的缓存值。

票数 0
EN

Stack Overflow用户

发布于 2021-09-15 02:09:20

这是因为,在默认情况下,服务工作者确实会进行缓存,因此您应该检查您的react项目index.js文件,并检查服务工作者是否已注册。serviceWorker.register()。

如果已注册,则注销服务工作者serviceWorker.unregister()。

上面的方法是相当激烈的,因为它可能会影响你的用户体验。建议你配置你的PWA来满足你特定的缓存需求。有关如何使用服务工作者的更多信息,请访问资源"https://developers.google.com/web/ilt/pwa/caching-files-with-service-worker“。

如果您的应用程序需要缓存,您的后端将发送适当的响应头。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63654724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档