【问题标题】:Teams desktop client sometimes caches my tab application and I can't clear itTeams 桌面客户端有时会缓存我的选项卡应用程序,但我无法清除它
【发布时间】:2021-04-21 16:22:20
【问题描述】:

我已经使用 SSO 构建了一个 Microsoft Teams 频道选项卡,并且我正在托管我通过 create-react-app 使用 React 构建的选项卡应用程序。

身份验证运行良好,应用程序加载并运行。

但当我在网站上更新我的应用程序时,Teams 桌面客户端(Mac 和 PC)有时会缓存旧应用程序,并且不会获取更改。但有时它会。

如果我运行 Web 客户端,它通常会获取更改。

我已确认每次更新时都会提供具有不同名称的新捆绑包。但是运行 Teams desktop devtools 我可以看到 Teams 每次都在请求 old 包,因此它肯定会缓存来自我的应用 URL 的响应。

我已了解人们在使用 Teams 桌面客户端时遇到的问题,即缓存 Sharepoint 内容而不获取内容更改。我已经尝试过缓存清除技术,但它们似乎不适用于这个问题。而且我不能合理地让用户在每次更新标签应用程序时都进行疯狂的缓存清除。

我该怎么办?有些人建议我需要在应用程序清单中更新我的版本并重新部署到 Teams——这看起来真的很残酷。我是否需要以某种方式设置一些缓存标头以强制 Teams 客户端获取新代码?

【问题讨论】:

  • 我应该指出:iOS 客户端通过选项卡上的“拉动刷新”来获取更改。似乎只有基于 Electron 的桌面客户端存在此问题。
  • 您可以尝试注销和登录吗?

标签: create-react-app microsoft-teams


【解决方案1】:

这似乎与您的应用管理默认浏览器缓存逻辑的方式有关。是否为您的应用启用了服务人员?您的 Web 服务器返回的缓存控制标头是什么?

有一些很棒的文章描述了所有可用的缓存控件;例如: https://medium.com/@codebyamir/a-web-developers-guide-to-browser-caching-cc41f3b73e7c

您是否尝试过这样做来防止页面缓存(请注意,从长远来看,您可能希望使用 ETags 之类的东西,这是一个性能更高的选项): https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control#preventing_caching

附:您还可以按照此处的说明在 Desktop Client 中打开开发工具来调试所有这些: (How) can I open the dev tools in the Microsoft Teams desktop client?

甚至强制清除您应用的所有缓存数据/资源:

【讨论】:

  • 这里的上下文是 Microsoft Teams 应用程序 - 您可以在其中构建一个通过应用程序清单包装在 Teams 中的 html 应用程序。在 Teams 桌面应用程序中,您自己无法控制任何缓存策略
  • Teams 桌面应用程序构建在 Electron 之上,而 Electron 又构建在 Chromium 之上,后者是为 Chrome 和 Edge 提供支持的同一浏览器引擎。当页面托管在 Teams 桌面应用程序中时,适用于这些浏览器之一中的网站的相同缓存控件也应该适用于您的页面。如果您看到不同的东西,请分享一个最小的重现应用程序来展示您遇到的问题。
  • 确实是 Electron,我只记得微软写过它——听起来他们控制了缓存。现在我找不到任何关于 Teams 应用程序和缓存的文档,所以你可能是对的,我只是在做梦。
猜你喜欢
  • 2019-12-26
  • 2023-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多