在调试时如何缓存单个渲染文件?

时间:2016-09-06 20:53:51

标签: system.web.optimization

目前,开发人员不可能轻松地协同工作。虽然关闭了调试缩小和捆绑,但缓存破坏者也是如此。这导致每个触发javascript的开发者必须打开每个javascript文件并强制刷新以确保它们不会丢失更改。

我找到了一些我认为可能有用的参考文献但是没有一个实现已经解决了。

第一种是通过IBundleTransform将横切变量应用于各个捆绑包。

Public Class DebugCacheBuster
    Implements IBundleTransform

    Public Sub Process(context As BundleContext, response As BundleResponse) Implements IBundleTransform.Process
        If BundleTable.EnableOptimizations Then
            Exit Sub
        End If

        For Each file As BundleFile In response.Files
            file.IncludedVirtualPath &= GetPathHash(HostingEnvironment.MapPath(file.IncludedVirtualPath))
        Next
    End Sub
End Class

这看起来很有希望,但我无法让它发挥作用。我尝试将这个类的新实例添加到每个bundle的构造函数中,并且我还尝试在创建它们之后循环遍历所有bundle。我的分数被点击,IncludedVirtualPath似乎已更新。继续渲染后,路径不会更新。

我还尝试创建自定义VirtualPathProvider和自定义VirtualFile并覆盖VirtualPath以返回正确的值,但再次渲染时,路径是裸露的。

我是否对转换做错了什么?还有其他方法可以实现吗?

1 个答案:

答案 0 :(得分:1)

显然,此代码不适用于System.Web.Optimizations的1.1.0版。升级到1.1.3版本(并添加程序集绑定重定向以解决与Web Grease的兼容性问题)后,问题中的代码段完美无瑕。