阳子SEO博客

如何优化网站性能?

首先,前端优化

网站性能优化是一个综合性的课题,它涉及到服务器的配置和网站的前后台程序。我只想分享我从实际经验中尝试过的网站性能优化方法。我之所以将web2.0放在标题中,是因为本文更关注中小型网站的性能优化,并且我使用的系统也是web2.0的典型LAMP架构

首先,让我们谈谈前端的优化。用户访问网页的80%的等待时间发生在浏览器的前端,尤其是下载网页和网页中的各种元素(图片,CSS,Javascript,flash…,)。因此,在许多情况下,与花费大量时间在复杂的程序改进上相比,前端优化通常可以起到事半功倍的作用。雅虎最近向第三方披露了其内部性能测试工具YSOW,并公布了13条著名的网站性能优化规则。建议您下载并安装YSOW作为评估网站优化效果的工具。下面我选择一个最有价值的来详细解释优化方法:

对于第一次访问您的网站并且没有将您的网站内容缓存在浏览器缓存中的用户,我们可以采取的措施包括:

1)减少页面访问产生的http连接数

对于第一次访问您的网站的用户来说,页面生成的http连接数是影响性能的关键瓶颈。

对策:

-保持页面设计尽可能简单,尽量减少图片的使用,并通过放弃一些不必要的页面效果来减少javascript的使用。

-使用一些优化技术,例如使用图片的背景位移来减少图片的数量;图像地图技术;使用内嵌图像将css图片绑定到网页中。

-尝试合并js和css文件,以减少独立文件的数量。

2)使用gzip压缩网页内容

使用gzip压缩网页中的静态内容可以大大减少用户访问网页的等待时间(据说可以达到60%)。主流网络服务器支持或提供gzip压缩。如果使用apache服务器,只需在配置文件中打开mod_gzip(apache1.x)或mod_deflate(apache2.x)。对于所有静态页面,使用gzip压缩可以显著提高服务器效率并减少带宽支出。请注意图片内容本身已经是压缩格式,所以不要再次压缩它是很重要的。

3)将CSS放在页面顶部,将JS文件放在页面底部

CSS的引用应该放在html的头部,JS文件的引用应该尽可能放在页面底部的标签后面。主要思想是让核心页面内容尽快显示出来。但是,应该注意的是,在一些广泛使用js的页面的底部可能会有一些js文件,这可能会导致一些意想不到的问题,所以可以根据实际情况适当地应用它。

4)最小化JS文件的内容

具体来说,一些javascript压缩工具用于压缩js脚本,删除空白字符和注释,并最小化变量名。在gzip压缩的基础上,js内容压缩可以提高5%的性能。

5)尽量减少外部脚本的使用,减少域名系统查询时间

不要在网页中引用太多的外部脚本。首先,dns解析过程需要20-120毫秒;其次,如果页面中引用了太多的外部文件(如各种广告、联盟和其他代码),您的网站可能会因为外部文件的响应速度而被拖垮。如果有必要,试着把这些脚本放在页脚。然而,应该提到的是,浏览器通常只能并行处理同一域名下的两个请求,而具有不同子域的域名不受此限制。因此,将该网站的静态内容(css、js)放在其他子域(如static.xxx.com)下将有助于提高浏览器并行下载网络内容的能力。

对于经常访问您网站的人来说,主要的优化思想是尽可能多地使用用户浏览器的缓存来减少服务器开销。

1)在标题中添加到期时间(到期标题)

为标题中的静态内容添加更长的过期时间,以便用户将来可以只访问缓存中的文件,而无需与服务器进行任何交互。然而,这样做有一些问题。当图片、CSS和js文件被更新时,如果用户不刷新他们的浏览器,他们就不能得到这个更新。这样,当我们修改图片、css和js文件时,我们必须重命名它们,以确保用户可以访问最新的内容。这可能会给开发带来很多麻烦,因为这些文件可能会被站点中的许多文件引用。Flickr的解决方案是通过url重写使不同版本号的URL实际指向同一个文件,这是一种聪明的方法,因为URL级别的操作效率非常高,可以为开发过程提供很多便利。

为了理解为什么这样做,有必要理解浏览器在访问网址时是如何工作的:

A.当第一次访问url时,用户从服务器部分获得页面内容,并将相关文件(图像、CSS、js,)保存在缓存中,并且还在文件头中保存相关信息,如过期时间、最后修改时间、ETags等。

B、当用户重复访问该网址时,浏览器首先检查缓存中是否有同名文件,如果有,则检查该文件的到期时间;如果文件未过期,将直接从缓存中读取文件,不再访问服务器。

C.如果缓存中文件的过期时间不存在或已经超过,浏览器将访问服务器获取文件的头信息,检查上次修改的和ETags信息,如果发现上次访问后本地缓存中的文件没有被修改,则使用本地缓存中的文件;如果已被修改,从服务器获取最新版本。

根据我的经验,如果可能的话,试着遵循这个原则,给静态文件增加到期时间,这可以大大减少用户对服务器资源的重复访问。

2)将css和js文件放在独立的外部文件中以供参考

将css和js文件放在单独的文件中,这样它们将被单独缓存,并且在访问其他页面时可以直接从浏览器的缓存中读取。一些网站的主页可能是个例外。这些主页的浏览量可能不大,但它们是用户访问网站的第一印象,也是引导用户进入其他页面的起点。或者这些页面本身使用了大量的ajax本地刷新和技术,css和js文件可以直接写在页面中。

3)删除重复的脚本

在IE中,包含重复的js脚本会导致浏览器缓存未被使用。仔细检查你的程序并去掉重复的引用脚本应该不难。

4)避免重定向

除了标题中的人工重定向之外,网页重定向经常会在无意中发生,并且重定向的内容不会使用浏览器缓存。例如,当用户访问时,服务器将转到/通过301,并在其后添加一个“/”。如果服务器的配置不好,也会给服务器带来额外的负担。通过配置apache的别名或使用mod_rewrite模块可以避免不必要的重定向。

no cache
Processed in 0.512015 Second.