【问题标题】:External CSS shows up in head tag, rather than separate file外部 CSS 显示在 head 标签中,而不是单独的文件中
【发布时间】:2015-07-20 18:49:14
【问题描述】:

平台
* Asp.net Webforms - C#
* .Net 4.5
* Azure 虚拟主机
* Chrome (43.0.2357.134 m) - 最新


问题
我目前正在使用 ASP.NET Web 优化框架捆绑 CSS 和 Javascript。在我的本地环境中进行测试时,一切正常。您可以清楚地看到 aspx 页面相对较小,并且捆绑包被列为单独的单独文件(cssAll 和 jsAll)。

https://www.dropbox.com/s/dazt681qylk41hm/local-login-cache.PNG?dl=0

部署到 Azure 后,Javascript 包确实保持正确链接并被缓存,但不再引用 CSS 包。相反,所有 CSS 代码都直接写入 aspx 文件的 head 标记中。这会导致 aspx 文件呈指数增长(从 5KB 到 87KB),并且会阻止 CSS 被缓存。有趣的是,当我禁用缓存时,CSS 文件现在作为一个单独的文件发送,我的 aspx 恢复到较小的大小。

https://www.dropbox.com/s/eox7b0vc0mi27wo/azure-login-combined.PNG?dl=0


我的想法和问题

  1. 这是正常行为吗?我是否只是误解或误用了 Chrome 开发者工具和/或 CSS 缓存的工作方式?
  2. 如果这是正常行为,那么为什么我的本地环境对 Azure 托管环境的响应不同?
  3. 如果这不是正常行为,那么问题可能出在哪里? (请阅读下面的注意事项,了解我已经尝试过或解决的问题)

注意事项

  • 我已确认我的本地计算机和 Azure 之间的所有 CSS、Javascript 和相关目录结构都是相同的。 (网络部署处理得很好)

  • 我用 IE11 和 Firefox 进行了完全相同的测试,得到了相似的结果。如果禁用缓存,CSS 会按预期单独出现,但如果启用缓存,则 CSS 会详细写入 aspx 页面的 head 标签。

  • 问题不在于捆绑,因为它正在工作。但是,我尝试直接链接到每个 CSS 文件,而不是使用捆绑包,并且发生了同样的奇怪情况。

  • 我在测试之间完全清除了浏览器缓存(使用 chrome 中的清除浏览历史记录),并使用多台计算机对此进行了测试,但结果是相同的。

  • 我要说明的页面非常小,但其他较大的页面则更糟,由于这种奇怪,可能会增长到 600KB 以上。

【问题讨论】:

  • 我的特殊问题已经解决,我有一个关于什么可以解决它的理论!我的 Web 应用程序配置为使用 https 运行,但每次访问生产服务器时,我都使用标准 http。通过在我的 web.config 中设置规则以将 http 请求重定向到 https,我的 CSS 现在已正确链接和缓存。如果有人证明我错了,我将不回答这个问题,但如果一周内没有人反对,我会将这个问题标记为已回答。

标签: css asp.net azure google-chrome-devtools bundling-and-minification


【解决方案1】:

奇怪的捆绑行为终于解决了!

我的本​​地项目默认设置为使用“https”。但是,在 Azure 上浏览我的生产站点时,我注意到它使用的是标准的“http”。一旦我强制所有页面通过 Azure 中的“https”进行路由,我的 CSS 现在就被正确地捆绑、链接和缓存了。

- 作为免责声明,老实说,我不知道为什么会这样,但它显然可以解决我的特定问题。如果有人可以解释“为什么”,请随时这样做。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-30
    • 1970-01-01
    相关资源
    最近更新 更多