c# - 使用 ASP.NET CSS 包时浏览器的奇怪缓存行为

标签 c# asp.net bundle stylebundle

我真的很困惑这里发生了什么。

似乎 (System.Web.Optimization.)Bundle 库在它 bundle 的所有文件上放置了一个文件系统观察器。每当发生变化时(例如,我调整了 CSS 文件的内容),它都会重建包。

我已经通过在 Fiddler 中向 CSS 包的 URL 发出请求来看到这项工作,它通过 100% 的时间完美地重新生成 CSS 包来工作。

但是,在 Firefox 和 Chrome 中,并且只有在某些情况下,它*似乎*没有访问网络服务器,而是继续为我提供旧的、未修改的 CSS。

奇怪的是,即使在执行完全缓存刷新 (ctrl+shift+r),甚至进入 chrome 并删除*所有*缓存数据后,它仍然为我提供完全相同的旧 CSS 文件。

这让我觉得故障/问题实际上在 Bundle 库中 - 可能 fiddler 正在传递不同的请求 header 或其他东西,这使得 Bundle 处理程序的行为不一致?

感谢对此事的任何帮助,因为它已经持续了好几天。

编辑:所以我整理了以下似乎有效的代码

...
var styleBundle = new Bundle(virtualPath, new NoCacheTransform());
...


public class NoCacheTransform : IBundleTransform
{
    public void Process(BundleContext context, BundleResponse response)
    {
        context.EnableOptimizations = false;
        context.UseServerCache = false;
        response.ContentType = "text/css";//text/css; charset=utf-8
        response.Cacheability = HttpCacheability.NoCache;
    }
}

其中一些属性分配可能不是必需的,但它更重要。

最佳答案

这可能有助于对 bundle 进行指纹识别?引用http://madskristensen.net/post/cache-busting-in-aspnet了解更多信息。

关于c# - 使用 ASP.NET CSS 包时浏览器的奇怪缓存行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20070265/

相关文章:

javascript - 在单个 WebForm 中拥有多个 Google Maps API

c# - 打开 Excel 应用程序客户端

javascript - Angular 2 : How to tell SystemJS to use a bundle?

ruby-on-rails - Bundler找不到 gem

c# - 无法启动您的应用程序 工作组信息文件不存在或已被其他用户独占打开

c# - 如何修复从Yahoo下载报价文件并插入数据库的脚本任务代码?

asp.net - IsMobileDevice 如何工作?

android - putStringArray() 使用字符串二维数组 (String[][] )

c# - 如何将嵌套列表中的值复制到新列表中

C# 使用正则表达式删除括号内的所有内容和括号本身