使用一个css / js文件

时间:2012-01-14 16:02:02

标签: javascript jquery html css

我已经读过为了优化页面加载,你应该使用一个css和一个js文件,因为浏览器逐个加载它们然后它会减慢页面加载速度。

我确信我不知道我在说什么,所以请纠正我......

如果有一个巨大的50kb CSS文件或5个10kb文件 - 页面加载不应该相同吗?一个css完成加载,浏览器应继续下一个并继续下载。?

这对我来说非常有趣,所以我很高兴听到你的回答。谢谢:))

4 个答案:

答案 0 :(得分:5)

传输的“数据”数量相同,但每个http请求都有许多标头,这些标头是http协议的一部分,同样,建立与服务器的新连接会导致时间和带宽的成本很低。

只发出一个请求会删除标头,并减少客户端连接服务器的次数。

答案 1 :(得分:4)

对于较小的网站,它确实无关紧要,但对于较大的网站,使用多个包含的CSS和JavaScript文件生成的其他请求可以相加。

根据Yahoo's developer site:“最终用户响应时间的80%用于前端。大部分时间都在下载页面中的所有组件:图像,样式表,脚本,Flash等。减少组件数量会减少渲染页面所需的HTTP请求数量。这是加快页面速度的关键。

减少页面中组件数量的一种方法是简化页面设计。但有没有办法构建内容更丰富的页面,同时还能实现快速响应时间?以下是一些减少HTTP请求数量的技术,同时仍支持丰富的页面设计。

组合文件是一种通过将所有脚本组合到单个脚本中来减少HTTP请求数量的方法,并且类似地将所有CSS组合到单个样式表中。当脚本和样式表在不同页面之间变化时,组合文件更具挑战性,但是使这部分发布过程可以缩短响应时间。

CSS Sprites是减少图像请求数量的首选方法。将背景图像合并为单个图像,并使用CSS背景图像和背景位置属性显示所需的图像片段。

图像地图将多个图像组合成一个图像。总体大小大致相同,但减少HTTP请求的数量会加快页面的速度。图像映射仅在图像在页面中是连续的时才起作用,例如导航栏。定义图像映射的坐标可能是乏味且容易出错的。使用图像地图进行导航也无法访问,因此不建议这样做。

内联图像使用数据:URL方案将图像数据嵌入实际页面中。这可以增加HTML文档的大小。将内嵌图像组合到(缓存的)样式表中是一种减少HTTP请求并避免增加页面大小的方法。所有主流浏览器尚不支持内嵌图像。

减少页面中的HTTP请求数量是可以开始的地方。这是提高首次访问者性能的最重要指南。正如Tenni Theurer的博客文章“浏览器缓存使用 - 暴露!”中所述,您网站的每日访问者中有40-60%使用空缓存。让这些首次访问者快速访问页面是获得更好用户体验的关键。“

答案 2 :(得分:3)

浏览器必须下载多个文件时有开销。大多数浏览器只会同时下载两个文件。因此,虽然大小可能相同50kb,但总体时间会有所不同。

答案 3 :(得分:1)

每次请求页面时,都会加载HTML。在加载时,找到的资源是逐步到服务器,这适用于CSS,JS,图像,视频文件等......

订单取决于资源的位置,因此,首先加载的是<head>中的元素,如<link...<style...的CSS,{{ 1}}用于JS,然后是<script资源。

对于文件,CSS和Image源可以并行加载,但JS源不会,因为它们依赖于彼此的功能和代码。因此,建议的做法是首先加载所有CSS文件,先将它们放在<body>元素中,然后放入所有JS源(最后一个以正确的顺序排列,所以你不会得到JS错误)。

为什么你需要最小化css,js资源,甚至用小图像制作精灵?

减少请求数量。每个请求都有一个时间成本和kb(小),时间成本是最重要的。因此,加载5张10Kb的图像意味着5个请求,而1张50kb的图像只需要1个请求。这同样适用于CSS和JS。

Google在本文中解释得更好:http://code.google.com/intl/en/speed/page-speed/docs/rtt.html#CombineExternalJS