asp.net - 我在 ASP.NET MVC 上使用 Scripts.Render() - 更新后 6 小时用户仍然获得旧的(捆绑的)脚本文件,这是什么原因?

标签 asp.net azure typescript browser-cache cache-control

我已经更新了 TypeScript 文件中的一些脚本,但用户似乎仍然获得旧版本的捆绑脚本。我怎么知道?因为我在日志中看到(远程)JavaScript 错误,这些错误引用了 100% 存在于新的最新版本中的类。 已经过去 6 个多小时了,我可以验证 ?={hash} 已更改。

我有一种感觉,嫌疑人可能是以下任何一种方式或组合:

  • 静态内容 (IIS)
  • Scripts.Render("")
  • TypeScript 编译
  • azure

我感觉它在某种缓存中或者与静态内容服务有关。或者使用 Script.Render()。

这可能是什么原因?这让我发疯,因为我知道该网站对某些用户来说已经损坏,但我无法修复。

我已经包含了下面的标题。

headers

这是 bundle 的代码。请注意,core.js 是由 TypeScript 生成的。

{
    var bundle = new Bundle("~/scripts/main-bundle");
    bundle.IncludeDirectory("~/scripts/fork", "*.js", searchSubdirectories : true );
    bundle.IncludeDirectory("~/scripts/app", "*.js", searchSubdirectories : true );
    bundle.Include("~/scripts/bundles/core.js");
    bundles.Add( bundle );
}

更新

如果他们因为可能被缓存而获取旧的 HTML,那么哈希炸弹不会改变 - 他们不应该仍然拥有一致的 JS 和 HTML 对吗?

最佳答案

https://poules.com/us没有指定 cache-control:max-age ,因此您可能有一些用户在浏览器缓存的 html 上使用旧脚本。

有一个 s-maxage 设置,但这只是对未设置的 public 缓存 max-age 的覆盖该页面缓存设置为私有(private);所以我认为它没有做任何事情。

此外,如果您有权访问 Azure 门户,则可以检查 Azure 以查看部署的内容。

关于asp.net - 我在 ASP.NET MVC 上使用 Scripts.Render() - 更新后 6 小时用户仍然获得旧的(捆绑的)脚本文件,这是什么原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50401779/

相关文章:

asp.net - 确保登录用户只能看到他们的数据的最佳方法

javascript - 我们可以在没有 Node 的情况下使用 Angular 吗?

javascript - 将所有 TypeScript 文件转译到相对相邻的目录

asp.net - ASP.NET 中的负载平衡产生的问题

c# - 发送的电子邮件仍然包含 HTML 标签。

javascript - 公司如何对 CDN 网站上的项目收费?

python - Azure 函数要求 pdftotext

python - 使用 Python、Azure Key Vault Secret Client 以编程方式连接

azure - 虚拟网络(经典)和 Azure 中的虚拟网络有什么区别?

angular - 我没有在 typescript angular7 中获取文本框值