当我们更改客户端的大部分资源时,客户端会遇到缓存问题,因为客户端的缓存在每次发布时都没有失效。
可能的解决方案1: 来自.net MVC,我正在考虑制作一个处理每个资源的帮助程序并为它们分配一个版本,例如:
@SomeHelper.VersionJsFile("~/scripts/somejs1","~/scripts/somejs2","~/scripts/somejs3")
输出:
<script src="~/scripts/somejs1?v=1234">
<script src="~/scripts/somejs2?v=1234">
...
问题:我不知道如何在ASP .net中做类似的事情。 问题2:很多文件,可能会忘记其中一些。
可能的解决方案2: 另一个解决方案是通过所有文件(很多文件......实际上是一个sh * tload的文件)并手动输入版本:
<script src="scripts/somejs1.js?v=<%=version %>
问题:很多文件,可能会忘记其中一些。
可能的解决方案3: 编写自定义过滤器流,如本例所述:Filter stream example
问题:危险,如果过滤器崩溃,客户端可能根本无法使用该软件。 问题2:由于我不习惯使用流,因此很难正确实施。 问题3:为未来的开发人员维持相当“难”。
可能的解决方案4: 使用YUI压缩工具。不要考虑它。这是遗留代码,为时已晚。
我的问题:在这样的系统中版本文件的最佳方法是什么?如果我已经找到了好的解决方案,您是否有关于如何正确实施上述解决方案的提示?
答案 0 :(得分:3)
我使用Cassette对js资源的捆绑和版本控制有很多好运。它supports webforms,仅用于选项中的版本控制/缓存清除。在配置中需要对资源进行一些设置,但您只需要在一个位置配置它,页面可以在需要时引用它们的资源。