【问题标题】:CSS changes automatically applied on local IIS pagesCSS 更改自动应用于本地 IIS 页面
【发布时间】:2015-02-07 18:59:18
【问题描述】:

我在本地 IIS(不是 IIS Express)上托管一个 ASP.NET 网站,一旦我在 Visual Studio 中保存对 .css 文件的更改,更改就会立即出现在使用该文件的浏览器窗口中(或在 Chrome 中将鼠标悬停在窗口上之后),无需清除缓存和刷新。

为什么更改会立即出现?

在浏览器中打开 .css 文件本身(不是使用该文件的页面)会显示更预期的结果:在我刷新 .css 文件之前,将文件保存在 Visual Studio 中不会改变我在浏览器中看到的内容。

【问题讨论】:

  • "并且只要我在 Visual Studio 中保存对 .css 文件的更改,更改就会立即出现在浏览器窗口中","将文件保存在在我刷新 .css 文件之前,Visual Studio 不会更改我在浏览器中看到的内容。”。不能下定决心吗?
  • @Banana 对不起,我认为这可能有点模棱两可,我想是的。在浏览器中查看 .css 文件时,文本不会更改,直到发生刷新。当在浏览器中查看页面(使用 .css)时,对 .css 文件的更改会立即在页面(以及浏览器的开发人员工具)上可见。
  • 我还是不明白。你的意思是css页面的内容在你刷新之前不会改变,但是aspx页面仍然显示改变了?
  • @Banana 是的,我相信我们现在意见一致。

标签: css asp.net iis visual-studio-2013


【解决方案1】:

事实证明,我在 Visual Studio 中启用了浏览器链接,并通过它启用了 CSS 自动同步。这会在本地机器上打开一个端口,并使用 SignalR 与浏览器窗口每秒进行大约 400 次通信,包括所需的任何 CSS 更改。

有关详细信息,请参阅以下主题:

【讨论】:

    【解决方案2】:

    这可能是由于缓存而发生的。当您打开 css 本身时,它会从服务器检索一个新副本,但是当您打开一个使用 css 文件的页面时,css 文件被缓存为页面的资源,浏览器只显示缓存的资源,直到您强制它重新加载它们。

    我学会了解决这个问题的一个技巧,就是将 css 文件链接到 aspx 页面,并在链接中包含一个随机查询字符串,这样它就会欺骗浏览器认为它是一个新资源并从无论如何都是服务器。

    像这样:

    <link href="../stylesheets/MyCSS.css?<%=DateTime.Now%>" 
          rel="stylesheet" type="text/css" />
    

    我们使用 aspx 预处理器指令 &lt;%=DateTime.Now%&gt; 将当前时间附加为查询字符串,以确保链接始终不同。

    • 不要忘记 css 文件名和预处理指令之间的问号

    【讨论】:

    • 抱歉,我一直想修改这个,但我的项目重新排序了。
    • 这会导致行为看起来更像我期望的那样,是的,但是为什么(没有更改此答案)页面会自动更新?更新如何与浏览器通信?
    • 因为显然浏览器只缓存资源。当您打开 css 页面时,它不被视为资源,因此它会获得更新版本,但是当 css 链接到网页时,它会成为资源并与图像和其他资源一起缓存
    猜你喜欢
    • 1970-01-01
    • 2012-01-28
    • 1970-01-01
    • 2017-11-17
    • 2018-07-29
    • 2021-12-02
    • 1970-01-01
    • 2011-02-28
    • 2022-01-15
    相关资源
    最近更新 更多