我该使用PHP合并CSS文件以减少HTTP请求吗?

3
我今天在链接一个网页时想到了一个问题:使用3个外部.css文件会导致太多的HTTP请求!我在想是否应该使用php将这些文件合并成一个?或者我应该只是将它们全部导入<head>中,使用<style>标签?我在互联网上找到了一个相关的链接:将CSS或JavaScript文件缝合以减少HTTP请求,但我认为它没有提供足够的讨论。
注:我也将此标记为javascript,因为我认为它也适用于.js文件,所以请注意您的答案是否仅适用于css或javascript。
3个回答

3
我在想是否应该使用php将这些文件合并成一个文件?
通常是的,不仅因为HTTP请求的数量(通常只会发生一次),而且因为Internet Explorer无法处理同一页面上超过31个外部样式表。最好以缓存的方式进行,这样您就不必在每个CSS请求上运行PHP。此问题提供了许多关于此问题的优秀资源。
还是应该用<link>标签将所有三个文件导入到中吗?
不应该:这会使得浏览器无法缓存样式,并增加每个请求的大小。

3
我认为这不是必要的。浏览器只会下载这两个文件一次。如果将它们添加到页面上的样式标签中,每次加载此页面时都需要下载相同的内容。
除非您的页面/站点每秒钟有大量访问量,否则您不需要这样做。
这就是我所想的...

那么你的意思是,除非我要制作一个非常高流量的网站(而我不需要这样做),否则你认为这种技术过于苛刻和不必要? - Zach Lysobey
我同意这感觉像是一种过早优化。尽管合并(特别是最小化)CSS和JS文件确实可以帮助减少冷启动页面的加载时间,但除非您对页面进行分析并查看这是否是真正的瓶颈,否则这可能不值得努力。 - Matthew Manela
我尊重地不同意@CrociDB和@Matthew的看法。任何基于Web的媒介中最关键的瓶颈是I/O,更具体而言则是HTTP请求。减少HTTP请求的总数可能会成为任何给定Web应用程序最有效的速度优化。即使只有一个请求,也可能从数百毫秒到极长的几秒钟内节省时间。对于“css文件仅下载一次,然后在浏览器中缓存”的论点:您的第一印象很重要!如果第一次快速完成,以后就会更加快速。 - Stephen

0

我使用多种方法,以便只提供一个CSS和尽可能少的JS文件。

通过使用媒体查询,可以将打印和屏幕样式合并到一个页面中,并通过使用body类选择器,可以内联添加ie样式而不使用hack。

例如,在main.css中

@media screen {
    p { [styles] }
    ...
}
@media print {
    p { [styles] }
    ...
}

本文介绍了 body class 选择器的概述:
http://misteroneill.com/improved-internet-explorer-targeting-through-body-classes/

非常有用,但不幸的是与我的当前项目无关。我会把它留作备用;-) - Zach Lysobey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接