关于javascript:我可以做些什么来减少HTML页面的加载时间?

What can I do to decrease load times of HTML pages?

注意:这是一个社区wiki帖子

为了尽量让用户体验最佳,我可以做些什么来提高HTML页面的加载效率?


在处理页面性能时,有一些重要的方法可以使页面加载时间保持快速。

CSS组织

尽量减少内联CSS样式,并在外部样式表中将常用的CSS规则放在一起。这有助于为以后保留可重用的样式,并且缺少样式属性使您的HTML页面下载更快。

缩小化

由于CSS和JavaScript包含的内容必须从服务器下载到客户机,所以越小越好。雅虎有一个很棒的工具叫yui compressor,可以用来减小CSS和javascript的大小。流行的库(如jquery)也将提供其库的缩小版本和开发版本。只需记住为调试目的保留一份非缩小版本的副本!

图像压缩

您可能需要考虑压缩图像。对于JPG文件,尝试设置大约80%的压缩率,并查看结果如何。你可以玩弄水平,直到你得到一个不错的结果。对于PNG文件,您可能需要查看一些可用的PNG压缩工具。

图片合并

保存HTTP请求的一个有趣的策略是使用css sprites。基本理论是,不要下载多个图像,只需下载一个包含所有图像的大图像。这意味着浏览器不需要连续地请求图像文件,只需要发出一个请求。教程CSS精灵:它们是什么,为什么很酷,以及如何使用它们在这个过程中有一些很好的信息,包括如何从现有的多图像布局转换。

资源排序

在订购CSS和JavaScript时,您希望您的CSS排在第一位。原因是呈现线程具有呈现页面所需的所有样式信息。如果javascript包含come first,则在继续下一组资源之前,javascript引擎必须对其进行全部分析。这意味着渲染线程无法完全显示页面,因为它没有所需的所有样式。下面是一个例子:

1
2
3
<link rel="stylesheet" type="text/css" href="/css/global.css" />
<link rel="stylesheet" type="text/css" href="/css/forms.css" />
<script type="text/javascript" src="/js/formvalidation.js">

跟踪/关联脚本位置

许多网站使用跟踪和/或附属脚本。如果远程主机出现问题,并且脚本包含在标签中,则浏览器必须等待下载完成后才能继续。虽然这些东西很好拥有,但它们不应该降低用户体验的速度。建议将这些脚本移到页面底部,就在标记之前:

1
2
3
4
5
6
<!-- HTML Here -->
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ?"https://ssl." :"http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost +"google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));

</body>

遗失资产

缺少css和javascript文件意味着浏览器必须与服务器进行不必要的通信,以获取不存在的文件。根据服务器的位置和丢失的文件数量,这可能会导致页面加载速度变慢。


缩小HTML源代码、CSS源代码和JS源代码。如果可能,请选择gzip。

http://code.google.com/p/htmlcompressor网站/

对于javascript,请尝试:http://code.google.com/closure/compiler/


首先,您应该使用诸如yslow(可用的火狐和Chrome扩展)或googe page speed online之类的工具。我肯定还有其他人。这些工具将对您的站点在不同领域的性能进行分级,并提供有关如何改进它们的提示。

使用这些工具一段时间后,您将开始改变构建页面的方式,并将这些额外的步骤考虑在内。

您还可以查看JavaScript文件的异步脚本加载程序。最流行的是head.js。在谷歌上搜索会给你提供更多关于更深入技术的文章。


强制性参考。

加快网站速度的最佳实践


HTML5样板会让你远离汗液。


在头标记后使用php的flush函数

1
2
3
4
5
6
7
<html>
<head>
</head>
<?php flush(); ?>
<body>
</body>
<html>