浏览器cachingCSS文件

关于CSS和浏览器的快速问题。 我尝试search,发现了一些类似的post,但没有确定的。

我在我的web项目中使用一个或两个CSS文件。 这些在我的网页的HEAD中引用。 一旦我点击了我的页面之一,CSS是否被caching,以便它不会重新下载每个请求? 但愿如此。 IE,Firefox和Safari处理这个不同? 如果浏览器closures,当新的浏览器实例打开时,第一次访问CSS会刷新吗?

您的文件可能会被caching – 但这取决于…

不同的浏览器有不同的行为 – 最明显的是当处理从服务器发出的模糊/有限的caching头时。 如果你发送一个清晰的信号,几乎所有的时间浏览器服从。

迄今为止,最大的差异在于不同Web服务器和应用程序服务器的默认cachingconfiguration。

有些(如Apache)很可能使用HTTP标头来提供已知的静态文件types,鼓励浏览器caching它们,而其他服务器可能会在每个响应中都发送no-cache命令,而不pipe文件types如何。

所以,首先,阅读一些优秀的HTTPcaching教程 。 内容发布者的HTTPcaching和caching破坏对我来说是一个真正的开眼界:-)

接下来,安装Firebug和Live HTTP Headers插件,找出服务器实际发送的是哪个头文件。

然后阅读您的Web服务器文档,了解如何调整它们以达到完美(或者说您的系统pipe理员为您做)。

至于浏览器重启时会发生什么,取决于浏览器和用户的configuration。

作为一个经验法则,期望浏览器在每次重新启动后更有可能检入服务器,以查看是否有任何更改(请参阅If-Last-Modified和If-None-Match )。

如果你正确地configuration你的服务器,它应该能够返回超短的304 Not Modified (花费非常less的带宽),然后浏览器将正常使用caching。

对于你的问题的第一部分 – 是的,浏览器cachingcss文件(如果这没有被浏览器的configuration禁用)。 许多浏览器都有键组合来重新加载没有caching的页面。 如果您对css进行了更改,并且希望用户立即看到它们,而不是等待下一次浏览器在不caching的情况下重新加载文件,则可以通过向url中添加一些参数来更改CSS服务的方式,如下所示:

 /style.css?modified=20012009 

它确实依赖于与CSS文件一起发送的HTTP标题作为以前的两个答案状态 – 只要你不把任何cachebusting的东西附加到href。 例如

 <link href="/stylesheets/mycss.css?some_var_to_bust_cache=24312345" rel="stylesheet" type="text/css" /> 

一些框架(例如rails)默认放置这些框架。

然而,如果你得到像萤火虫或小提琴那样的东西,你可以看到你的浏览器正在下载每个请求 – 这是特别有用的查找你的浏览器正在做什么,而不是它该做什么。

所有的浏览器都应该以相同的方式尊重caching头,除非被configuration为忽略它们(但是必然会有例外)

可能值得注意的是,IE不会使用@import方法来caching其他css文件调用的css文件。 因此,例如,如果您的html页面链接到通过@import引入“reset.css”的“master.css”,那么reset.css将不会被IEcaching。

这取决于你与CSS文件一起发送什么标题。 检查您的服务器configuration,因为您可能不是手动发送它们。 做一个谷歌search“httpcaching”了解可以设置不同的caching选项。 例如,您可以强制浏览器在每次加载文件时下载新的文件副本,也可以将文件caching一周。

除非你弄脏了你的服务器,否则它被caching了。 所有的浏览器应该都是一样的。 有些人(像我)可能会configuration他们的浏览器,以便它不caching任何文件。 closures浏览器不会使caching中的文件无效。 但是,更改服务器上的文件应该会导致文件刷新。