【发布时间】: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
我的想法和问题
- 这是正常行为吗?我是否只是误解或误用了 Chrome 开发者工具和/或 CSS 缓存的工作方式?
- 如果这是正常行为,那么为什么我的本地环境对 Azure 托管环境的响应不同?
- 如果这不是正常行为,那么问题可能出在哪里? (请阅读下面的注意事项,了解我已经尝试过或解决的问题)
注意事项
我已确认我的本地计算机和 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