CSS更改不反映在网站上

时间:2008-12-21 08:19:14

标签: asp.net css

每当我们对CSS进行更改时,通常需要24小时才能在我的网站上反映这些更改。我已经尝试清除服务器缓存和浏览器缓存,但它也没有帮助。还有其他方法可以在更新后立即反映CSS更改吗?

它发生在所有的浏览器中...当我在浏览器中检查它时,我可以通过两个路径访问我的css文件,例如:我将我的css存储在名为“Cssfolder”的文件夹中,我的css名称是135.css 因此,当我访问文件夹路径时, C ssfolder / 135.css& c ssfolder / 135.css,其中一条路径显示我最新的css,而其他一条显示我的旧css.Notice“c”在一条路径中占用,而在其他路径中小。

感谢。

9 个答案:

答案 0 :(得分:7)

在我的很多项目中,我发现这是一个非常常见的问题。我会建议两件事......

  1. 如果它只是您正在处理的应用,则可以在开发过程中使用CSS Cachebuster

  2. 按照Cachebuster背后的想法,我发现经常将CSS文件的时间戳作为CSS链接的查询字符串添加将有助于告诉浏览器该文件是不同的......类似于。 .. whatever.css?12212009035543

答案 1 :(得分:3)

您可能希望使用监控工具(例如Firefox的Live Http Headers)来查看服务器的请求和响应。这通常为我解决了很多问题。看一下“ Expire ”标题和条件请求(例如:“If-modified-since”)。这就是说,看一下服务器和客户端的本地时间和时区 - 它们可能会有很大不同,并且条件GET请求“似乎”正确处理,因为未来或其他错误的时间戳。

您可以强制直接从服务器加载当前的css,并向网址附加随机唯一值,例如http://example.com/Cssfolder/135.css?983274928374http://example.com/cssfolder/134.css?08973249827。除非你两次使用相同的随机值,否则无法缓存它。

通过这种方式,您可以了解解决问题的方法:在服务器,ISP /代理或浏览器上。

答案 2 :(得分:2)

我写过一篇关于我们如何克服这个问题的博文:

Avoiding JavaScript and CSS Stylesheet Caching Problems in ASP.NET

基本上,在开发过程中,您可以在CSS文件的文件名后面的查询字符串中添加一个随机数。当您执行发布版本时,代码将切换为使用程序集的修订版号。这意味着在您的生产环境中,您的客户端可以缓存样式表,但是每当您发布新版本的站点时,他们都将被迫重新加载该文件。

答案 3 :(得分:1)

您确实需要查看这是服务器端还是客户端。如果服务器仍在服务旧CSS,那么显然你没有机会在客户端。

我偶尔会看到我必须在浏览器中显示CSS的时间,然后下次我去过真实页面时,它会使用新的CSS。通常只需点击刷新即可。

你有没有像Akamai这样的网络缓存?

如果您尝试从一台从未见过旧版本的计算机转到CSS页面,它会显示哪个版本?

编辑:更改了答案以反映有问题的修改。

答案 4 :(得分:1)

我过去一直在处理这个问题,最后写了一个httpmodule来处理它。

这很简单,它只是在head标签中找到所有脚本/ css链接(它们现在需要有runat = server)并将组件版本号附加到链接,就像Tim K描述的那样。这样我确保我的客户在我的应用程序在生产中更新时总是获取最新的css /脚本,而不必再次处理这个问题。

答案 5 :(得分:1)

答案 6 :(得分:0)

可能是Internet服务提供商缓存,如此case

答案 7 :(得分:0)

我对此问题感到困惑,然后有人说Ctrl + F5。为我工作:))

答案 8 :(得分:-1)

当我正在开发时,我需要确保在工作时看到变化,我将css粘贴在页面中,即

<style type="text/css">
/* your css */
</style>

或者您可以不断更改css文件本身的名称,在生产环境中不是很有用,但在开发时可能还可以。

我知道它不能解决问题,但是对于开发它是可以的。