2008-12-21 64 views
5

每当我们对CSS进行更改时,通常需要24小时才能反映我网站上的更改。我已经尝试清除服务器缓存和浏览器缓存,但它也无济于事。是否有任何其他方法可以在更新后立即反映CSS更改?未在网站上反映的CSS更改

它发生在所有浏览器中......当我在浏览器中检查它时,我可以通过两条路径访问我的css文件,例如:我将我的css保存在名为“Cssfolder”的文件夹中,我的css名称是135。 CSS 因此,当我访问该文件夹的路径,ç ssfolder/135.css & ç ssfolder/135.css,路径的一个显示我最新的CSS,而另一个显示我老css.Notice的“c”是在一条路径上捕获,而在另一条路径上小。

谢谢。

+0

您使用代理服务器还是ISP缓存页面? – some 2008-12-21 08:26:54

+0

即使您在查看“旧”CSS时点击Shift-F5,情况是否如此? – 2008-12-21 08:36:54

+0

对于FF它是CTRL-F5 – some 2008-12-21 08:40:11

回答

7

我发现这是我的很多项目中很常见的问题。如果它只是你工作,你可以在开发过程中使用CSS Cachebuster一个应用程序,我建议两件事情......

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

1

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

我偶尔会看到不得不在浏览器中显示CSS的时间,然后下一次我去过真正的页面时,它使用了新的CSS。通常只需刷新就可以了。

你有任何网络缓存像Akamai参与任何地方?

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

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

0

也许互联网服务提供商的缓存,如在这case

-1

当我发展,我需要确保我看到的变化,因为我的工作,我坚持的CSS在网页即

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

或者你可以不断地改变CSS文件本身的名称,在生产环境中不是很有用,但在开发时也许可以。

我知道它不能解决问题,但对于开发它没关系。

3

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

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

通过这种方式,您可以了解您的问题的解决方案的进一步位置:在服务器,ISP /代理或浏览器。

1

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

这很简单,它只是发现头标签中的所有脚本/ css链接(它们现在需要有runat = server)并将程序集版本号附加到链接,与Tim K描述的方式相同。通过这种方式,当我的应用程序在生产环境中更新时,我肯定我的客户总是获取最新的css /脚本,而不必再次处理这个问题。

2

我已经写了一篇博客文章,我们如何克服在这里这个问题:

Avoiding JavaScript and CSS Stylesheet Caching Problems in ASP.NET

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

0

我很困惑这个问题,然后有人说Ctrl + F5。为我工作:)