将文件捆绑在不同的目录中?

Bundling files in different directories?

我最近在一个网站上遇到一个问题,页面上的样式真的很乱,但只在 IE 中。我的老板告诉我这很可能是因为正在呈现的 CSS Bundle 包含来自不同目录的 CSS 文件,所以我检查了一下确实如此。它类似于以下内容:

    bundles.Add(new StyleBundle("~/path/subpath/all").Include(
                 "~/path/subpath/filename.css",
                 "~/path/subpath/filename1.css",
                 "~/path/subpath/filename2.css",
                 "~/path/subpath/filename3.css",
                 "~/path/subpath/anotherSubPath/filename.css",
                 "~/path/subpath/anotherSubPath/filename1.css",
                 "~/path/aDifferentSubPath/filename.css"));

他说Bundling不能这么用,一个Bundle里只能有同目录下的文件,所以我把它们分开如下:

bundles.Add(new StyleBundle("~/path/subpath/all").Include(
             "~/path/subpath/filename.css",
             "~/path/subpath/filename1.css",
             "~/path/subpath/filename2.css",
             "~/path/subpath/filename3.css"));

bundles.Add(new StyleBundle("~/path/subpath/anotherSubPath/all").Include(
             "~/path/subpath/anotherSubPath/filename.css",
             "~/path/subpath/anotherSubPath/filename1.css"));

bundles.Add(new StyleBundle("~/path/aDifferentSubPath/all").Include(
             "~/path/aDifferentSubPath/filename.css"));

这有效并解决了我们在 IE 中的问题。好的,现在开始我的问题:

对于旧版本的 IE,至少 < 10 有一些已知的限制

IE 可以加载的 CSS 和脚本文件的数量 - 如果您 运行 网站处于 Debug 模式且无法获取捆绑包,则这可能是个问题捆绑。

如果不是这样,那么您的文件中是否有超过 4,096 个选择器???

Internet Explorer CSS limits

当您的 css 文件使用图像、字体等静态文件的相对路径时,捆绑名称和文件夹存在常见问题

例如你有:

 bundles.Add(new StyleBundle("~/path/subpath/all").Include(
             ...
             "~/path/subpath/anotherSubPath/filename1.css"));

并且在您的 filename1.css 中您使用 background: url(image.jpg),通常此图像位于与 filename1.css 相同的文件夹中,即 ~/path/subpath/anotherSubPath/image.jpg。使用如下 bundel 使浏览器查找不存在的文件 ~/path/subpath/all/image.jpg。也许这就是分开捆绑的原因。

你的老板听起来很棒!首先,CSS 路径是相对于 CSS 文件的,所以我怀疑这就是他建议您无论如何都要更改它的原因。

但是 CSS 长度也可能是一个问题,因此可能是这种情况的根本原因。

不幸的是,浏览器中有一些需要注意的怪癖,例如这个 CSS 或 Apple 设备上的图像大小(运行 之前使用 sprite 表)。你的老板听起来像是那种充满活力的人,会知道这一点。