【发布时间】:2017-01-11 12:34:00
【问题描述】:
作为开发人员,我们都遇到过这个问题:您需要在网站上进行维护,并且有客户端脚本:foo.js 现在您对foo.js 进行更改并对其进行测试,签入,将新代码部署到测试环境。
现在测试用户声称您没有解决问题,因为他的浏览器仍然在缓存中保存旧的foo.js。
我正在考虑创建文件内容的哈希并在文件名中使用它。 foo_8c736521.js
我可以创建哈希 -> 重命名文件 -> 并更新 BundleConfig.cs
但我希望这可以在 Visual Studio 中自动完成。
是否有某种库可以在 C# .NET 中为我处理这个问题?
我已将此转换添加到我的 web.Test.config 文件中:
<system.web>
<compilation debug="false" targetFramework="4.5" xdt:Transform="Replace" />
</system.web>
现在在此环境中启用了 Bundle 优化。它有效。
【问题讨论】:
-
foo.js?v=
-
@aabilio 这将强制浏览器始终获取文件,从而有效地禁用缓存机制。我只想在实际文件内容发生变化时禁用缓存。
-
哦,我明白了,我不明白这个问题。所以,如果你控制服务器,我会使用 Etag 和/或 Last-Modified HTTP Headers...
-
您必须为每个文件版本创建一个唯一的 URL(使用查询字符串或更改文件名)。如果您使用的是 ASP.NET,您应该在 Google 上搜索“bundle”。如果你使用的是 ASP.NET Core,你应该检查this blog post
标签: javascript c# browser-cache