4

我的页面加载正常,然后只要您点击刷新按钮,所有样式都会消失。

它似乎特定于chrome。如果我查看网络选项卡,我会看到我的 css 文件返回 304 Not modified 但类型已更改为 text/html。在初始加载时,它是文本/css。

如果我关闭缓存一切正常。

我在这里看到了一个类似的问题,但它以前工作过,我没有更改服务器。

我似乎已将其范围缩小到一个 css 文件的问题。特别是添加背景图像。

body {background:#b4dfff url(/images/backgrounds/background.jpg) no-repeat fixed top;
text-align:left;
font-family: Helvetica, Arial, sans-serif;
color: #585858;
font-size: 12px;    
}

如果我删除背景,问题发生的频率就会大大降低。我尝试将其更改为

background-color:#b4dfff;
Background-image:url(/images/backgrounds/background.jpg) no-repeat fixed top;

那没用

4

3 回答 3

2

事实证明,这与 chrome 处理 304 响应有关。

Chrome 请求内容并收到 304 响应,表示它没有被修改。

当 IIS 返回 304 响应时,其中包含内容类型。Chrome 不会忽略内容类型并查看并看到内容类型已更改,因为 IIS 仅返回默认类型 chrome 认为该文件不再是样式表并且不加载它。

所以为了解决这个问题,我们让它每次都重新加载样式表。我还没有找到一种简单的方法来修改 304 响应,使其不包含内容类型。

这是谷歌问题 https://code.google.com/p/chromium/issues/detail?id=246875

于 2013-07-31T16:18:49.123 回答
1

这里提到了同样的问题:http://productforums.google.com/forum/#!topic/chrome/zID6uQQfKH8 似乎临时解决方案可能是

关闭 ETags 并在 HTTP 标头中设置 no-cache。

于 2013-04-25T13:43:49.970 回答
0

我遇到过同样的问题。

我发现一个简单的解决方法是在你的 css 文件的每一行的末尾添加“!important”,以确保它覆盖默认的 css 样式。

我检查了页面刷新后一直恢复到原始样式的项目,现在它们保持 css 文件中提供的样式。

一个例子:

.div {
    display: block !important;
    margin-top: 10px !important; 
} 
于 2022-01-07T22:24:53.540 回答