【发布时间】:2016-06-03 06:50:45
【问题描述】:
一切都很好,直到我注意到捆绑的脚本和 CSS 文件返回 cache: no-cache、expires: -1 和 pragma: no-cache 标头。
当然,这与 Azure 无关。为了证明这一点,我通过直接从我的站点而不是 CDN 访问它们来测试捆绑包 - 即。 mysite.com/bundles/mybundle?v={myassemblyversion}。结果是一样的。当我禁用 CDN,并使用 MVC 生成的 v 查询字符串访问捆绑文件时,标题如预期:公共缓存,到期时间为一年。
我尝试实现IBundleTransform 接口,但context.BundleVirtualPath 是只读的(即使它说获取或设置虚拟路径...)。我也尝试修改Application_EndRequest() 处的响应标头,但也没有用。我最后的赌注是编写 IIS 出站规则,但由于我的包(与“自定义”v 查询字符串一起使用)不返回 Last-Modified 标头,所以这也是徒劳的尝试。
我的问题是:如果我希望我的捆绑文件缓存在客户端上,我该如何使用 MVC 捆绑与 Azure CDN - 也就是说,直到v 查询字符串发生变化?
【问题讨论】:
标签: asp.net-mvc azure caching model-view-controller bundling-and-minification