在提高整体网站性能(下载和渲染速度)的情况下似乎有以下两个最佳实践之间的矛盾:最佳实践 - 只需下载您需要的CSS,或使用缩小过程?
只有打倒你需要的页面之中的CSS查看。 (因为太多的CSS规则会导致慢渲染)
始终缩小CSS和它合并成一个文件。 (因为更多的请求意味着较慢页面加载)
现在说我决定遵循规则1.
以下问题上来:
如果2页共用1套的CSS规则?
在这种情况下,我需要把这些规则在一个单独的文件和参考来自两个页面文件。
但是,如果我开始有很多这样的“共享规则”,我可能最终会从每个页面引用了很多单独的文件,因此,打破规则2.
例如,网页A可能取决于CSS 1和2,而页面B和C都依赖于CSS 2,页面D取决于CSS 1.
在这种情况下,不可能每个页面只有一个CSS,甚至不能有多个CSS,因为有些页面需要与其他页面共享一些CSS文件。
但是我们不能解决结合所有的CSS的每一页到一个单独的每个页面的CSS文件这个问题?
我们可以,但是这会带来其他问题。
如果两个网页共享CSS的一个片段,即使我们压缩了地狱的话,我们还是会反复下载的片段,每次我们请求一个页面谁的CSS时间包含片段。
由于我们已将页面中的CSS 压缩,所以我们允许在CSS片段被两个或多个页面共享的情况下发生冗余。
浏览器缓存确实没有我们这里好,因为在浏览器中,每个CSS文件有不同的文件名,因此是一个独立的文件,即使他们中的一些包含内容是一样的。
那么我们应该打破哪条规则?
我划掉的一个是:
1.您应该只打倒你需要的网页正在查看的CSS。
我认为这是多简单,更实用来缩小/组合地狱所有的CSS为我的网站,并把它倒在一个去。
至于性能问题,这可能会创造,我认为它们是由以下事实削弱:
现代浏览器越来越善于处理CSS规则比较快,所以很快就没有问题,如果你在内存中有很多规则没有被使用。
拥有所有你的CSS缓存将提高速度比你从留出不必要的规则,这会得到任何改善多了很多获得加载反正,当用户浏览到需要这些规则的网页。
我就在这里吗?
我完全会回答这个问题,但它超级迟,而且这是一本能够通读的小说。你绝对应该缩小你的CSS,并且你应该尽可能地把它合并成一个文件。客户端会将文件拉下一次,并将其缓存以供将来使用。它远胜于多个HTTP请求。 – 2010-07-04 05:49:27
是的,具有讽刺意味的是,我的问题也许可以使用一些缩小:) – Jonathan 2010-07-04 06:18:57