我已经更新了 TypeScript 文件中的一些脚本,但用户似乎仍然获得旧版本的捆绑脚本。我怎么知道?因为我在日志中看到(远程)JavaScript 错误,这些错误引用了 100% 存在于新的最新版本中的类。
已经过去 6 个多小时了,我可以验证 ?={hash}
已更改。
我有一种感觉,嫌疑人可能是以下任何一种方式或组合:
- 静态内容 (IIS)
- Scripts.Render("")
- TypeScript 编译
- azure
我感觉它在某种缓存中或者与静态内容服务有关。或者使用 Script.Render()。
这可能是什么原因?这让我发疯,因为我知道该网站对某些用户来说已经损坏,但我无法修复。
我已经包含了下面的标题。
这是 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/