如何进行网站性能优化,第1张

一、前端优化

网站性能优化是一个很综合的话题,涉及到服务器的配置和网站前后端程序等各个方面,我只是从实际经历出发,分享一下自己所尝试过的网站性能优化方法。之所以在标题上挂一个web20,是因为本文更偏重于中小网站的性能优化,我所使用的系统也是典型web20的LAMP架构。

首先讲讲前端的优化,用户访问网页的等待时间,有80%是发生在浏览器前端,特别是页面和页面中各种元素(、CSS、Javascript、 flash…)的下载之上。因此在很多情况下,相对于把大量的时间花在艰苦而繁杂的程序改进上,前端的优化往往能起到事半功倍的作用。雅虎最近将内部使用的性能测试工具yslow向第三方公开,并发布了著名的网站性能优化的十三条规则,建议你下载并安装yslow,并作为测评网站优化效果的工具。下面我挑其中特别有价值的具体说明一下优化的方法:

对于第一次访问您网站,尚未在浏览器cache中缓存您网站内容的用户,我们可以做的事情包括:

1)减少一个页面访问所产生的http连接次数

对于第一次访问你网站的用户,页面所产生的http连接次数是影响性能的一个关键瓶颈。

对策:

- 尽量简洁的页面设计,最大程度减少的使用,通过放弃一些不必要的页面特效来减少javascript的使用。

- 使用一些优化技巧,比如利用的背景位移减少的个数;image map技术;使用Inline images将css捆绑到网页中。

- 尽量合并js和css文件,减少独立文件个数。

2) 使用gzip压缩网页内容

使用gzip来压缩网页中的静态内容,能够显著减少用户访问网页时的等待时间(据说可达到60%)。主流的web服务器都支持或提供gzip压缩,如果使用apache服务器,只需要在配置文件中开启 mod_gzip(apache1x)或mod_deflate(apache2x)即可。凡是静态的页面,使用gzip压缩都能够显著提高服务器效率并减少带宽支出,注意内容本身已经是压缩格式了,务必不要再进行压缩。

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

CSS的引用要放在html的头部header中,JS文件引用尽量放在页面底端标签的后面,主要的思路是让核心的页面内容尽早显示出来。不过要注意,一些大量使用js的页面,可能有一些js文件放在底端会引起一些难以预料的问题,根据实际情况适当运用即可。

4)使JS文件内容最小化

具体来说就是使用一些javascript压缩工具对js脚本进行压缩,去除其中的空白字符、注释,最小化变量名等。在使用gzip压缩的基础上,对js内容的压缩能够将性能再提高5%。

5)尽量减少外部脚本的使用,减少DNS查询时间

不要在网页中引用太多的外部脚本,首先,一次dns的解析过程会消耗20-120毫秒的时间;其次,如果在页面中引用太多的外部文件(如各种广告、联盟等代码),可能会因为外部文件的响应速度而将你的网站拖得很慢。如果不得不用,那么就尽量将这些脚本放在页脚吧。不过有一点需要提及,就是浏览器一般只能并行处理同一域名下的两个请求,而对于不同子的域名则不受此限制,因此适当将本站静态内容(css,js)放在其他的子域名下(如 staticxxxcom)会有利于提高浏览器并行下载网页内容的能力。

对于您网站的经常性访问用户,主要的优化思路就是最大限度利用用户浏览器的cache来减少服务器的开销。

1)在header中添加过期时间(Expires Header)

在header中给静态内容添加一个较长的过期时间,这样可以使用户今后访问只读取缓存中的文件,而不会与服务器产生任何的交互。不过这样做也存在一些问题,当、CSS和js文件更新时,用户如果不刷新浏览器,就无法获得此更新。这样,我们在对、css和js文件修改时,必须要进行重命名,才能保证用户访问到最新的内容。这可能会给开发造成不小的麻烦,因为这些文件可能被站点中的许多文件所引用。flickr提出的解决办法是通过url rewrite使不同版本号的URL事实上指向同一个文件,这是一个聪明的办法,因为url级别的操作效率是很高的,可以给开发过程提供不少便利。

要理解为什么这样做,必须要了解浏览器访问url时的工作机制:

a 第一次访问url时,用户从服务器段获取页面内容,并把相关的文件(images,css,js…)放在高速缓存中,也会把文件头中的expired time,last modified, ETags等相关信息也一同保留下来。

b 用户重复访问url时,浏览器首先看高速缓存中是否有本站同名的文件,如果有,则检查文件的过期时间;如果尚未过期,则直接从缓存中读取文件,不再访问服务器。

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

我的经验,如果可能,尽量遵循此原则给静态文件添加过期时间,这样可以大幅度减少用户对服务器资源的重复访问。

2)将css和js文件放在独立外部文件中引用

将css和js文件放在独立文件中,这样它们会被单独缓存起来,在访问其他页面时可以从浏览器的高速缓存中直接读取。一些网站的首页可能是例外的,这些首页的自身浏览可能并不大,但却是用户访问网站的第一印象以及导向到其他页面的起点,也可能这些页面本身使用了大量的ajax局部刷新及技术,这时可以将 css和js文件直接写在页面中。

3)去掉重复的脚本

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

4)避免重定向的发生

除了在header中人为的重定向之外,网页重定向常在不经意间发生,被重定向的内容将不会使用浏览器的缓存。比如用户在访问,服务器会通过301转向到/,在后面加了一个“/”。如果服务器的配置不好,这也会给服务器带来额外的负担。通过配置apache的 alias或使用mod_rewrite模块等方法,可以避免不必要的重定向。

还有一些,比如使用CDN分发机制、避免CSS表达式等、避免使用ETags等,因为不太常用,这里就不再赘述了。

做完了上述的优化,可以试着用yslow测试一下网页的性能评分,一般都可以达到70分以上了。

当然,除了浏览器前端和静态内容的优化之外,还有针对程序脚本、服务器、数据库、负载的优化,这些更深层次的优化方法对技术有更高的要求。本文的后半部分将重点探讨后端的优化。

二、后端优化

上次写完web20网站前端优化篇之后,一直想写写后端优化的方法,今天终于有时间将思路整理了出来。

前端优化可以避免我们造成无谓的服务器和带宽资源浪费,但随着网站访问量的增加,仅靠前端优化已经不能解决所有问题了,后端软件处理并行请求的能力、程序运 行的效率、硬件性能以及系统的可扩展性,将成为影响网站性能和稳定的关键瓶颈所在。优化系统和程序的性能可以从以下的方面来入手:

1)apache、mysql等软件的配置的优化

尽管apache和mysql等软件在安装后使用的默认设置足以使你的网站运行起来,但是通过调整mysql和apache的一些系统参数,还是可以追求更高的效率和稳定性。这个领域中有很多专业的文章和论坛(比如: ),要想掌握也需要进行深入的研究和实践,这里就不重点讨论了。

2)应用程序环境加速

这里仅以我最常应用的php开发环境为例,有一些工具软件可以通过优化PHP运行环境来达到提速的目的,其基本原理大致是将PHP代码预编译并缓存起来,而不需要改变任何代码,所以比较简单,可以将php的运行效率提升50%以上。比较常用的php加速工具有:APC( http: //peclphpnet/package-infophppackage=APC)、Turck MMCache( )、php accelebrator(),还有收费的Zend Performance Suite

3)将静态内容和动态内容分开处理

apache是一个功能完善但比较庞大的web server,它的资源占用基本上和同时运行的进程数呈正比,对服务器内存的消耗比较大,处理并行任务的效率也一般。在一些情况下,我们可以用比较轻量级的web server来host静态的、样式表和javascript文件,这样可以大大提升静态文件的处理速度,还可以减少对内存占用。我使用的web server是来自俄罗斯的nginx,其他选择方案还包括lighttpd和thttpd等。

4)基于反向代理的前端访问负载均衡

当一台前端服务器不足以应付用户访问时,通过前端机实现web访问的负载均衡是最快速可行的方案。通过apache的mod_proxy可以实现基于反向代理的负载均衡,这里推荐使用nginx做代理服务器,处理速度较apache更快一些。

5)应用缓存技术提高数据库效能,文件缓存和分布式缓存

数据库访问处理并发访问的能力是很多网站应用的关键瓶颈,在想到使用主从结构和多farm的方式构建服务器集群之前,首先应该确保充分使用了数据库查询的缓存。一些数据库类型(如mysql的innoDB)自身内置对缓存的支持,此外,还可以利用程序方法将常用的查询通过文件或内存缓存起来。比如通过 php中的ob_start和文件读写函数可以很方便的实现文件形式的缓存,而如果你拥有多台服务器,可以通过memcache技术通过分布式共享内存来对数据库查询进行缓存,不仅效率高而且扩展性好,memcache技术在livejournal和Craigslistorg等知名网站应用中都得到了检验。

6)服务器运行状态的检测,找到影响性能的瓶颈所在

系统优化没有一劳永逸的方法,需要通过检测服务器的运行状态来及时发现影响性能的瓶颈,以及可能存在的潜在问题,因为网站的性能,永远取决于木桶中的短板。可以编写一些脚本来检测web服务的运行,也有一些开源的软件也提供了很好的功能

7)良好的扩展架构是稳定和性能的基础

一些技巧和窍门可以帮你度过眼前的难关,但要想使网站具备应付大规模访问的能力,则需要从系统架构上进行彻底的规划,好在很多前人无私的把他们架构

网站的经验分享给我们,使我们可以少走甚多弯路。我最近读到的两篇有启发的文章:

- 从LiveJournal后台发展看大规模网站性能优化方法

- Myspace的六次重构

最后不得不提到程序编码和数据库结构对性能的影响,一系列糟糕的循环语句,一个不合理的查询语句、一张设计不佳的数据表或索引表,都足以会使应用程序运行的速度成倍的降低。培养全局思考的能力,养成良好的编程习惯,并对数据库运行机制有所了解,是提高编程质量的基础。

        常用网络性能指标包括:并发数、响应时间、吞吐量、PV和UV。

        并发数:系统能够同时处理的请求数量,反应系统的负载能力。一般为请求无等待的最佳并发数。最佳并发数,当系统的负载等于最佳并发数时,系统的整体效率最高,没有资源被浪费,请求也不需要等待。最大并发数,系统的负载一直持续,有些请求在处理而有的请求在自己最大的等待时间内等待的时候。最佳并发数需要大于系统的平均负载,最大并发用户数需要大于系统需要承受的峰值负载。

        响应时间:从发出请求到收到响应数据所花费的总体时间,反应系统的快慢,包括网络响应时间和应用程序响应时间两部分。

        吞吐量(Throughput):单位时间内系统能处理的请求数量,体现系统处理请求的能力,常用量化指标包括QPS(每秒查询数)、TPS(每秒事务数)、HPS(每秒HTTP请求数):

        (1)QPS:Queries Per Second,每秒查询率。是一台服务器每秒能够响应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。

        (2)TPS:Transactions Per Second,每秒处理事务数。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。包括用户请求服务器、服务器内部处理、服务器返回给用户。TPS与QPS类似,差异可以理解为:对于页面的一次访问,形成一个TPS,但一次页面请求,可能产生多次对服务器的请求,服务器对这些请求,均计入QPS中,例如:一个页面访问请求服务器3次,则计算1个TPS,3个QPS。

        (3)HPS:Hits Per Second,每秒点击次数,是指在一秒钟的时间内用户对Web页面的链接、提交按钮等点击总和。它一般和TPS成正比关系,是B/S系统中非常重要的性能指标之一。

        页面浏览量(PV):Page View,即页面浏览量或点击量,用户每次刷新即被计算一次。

        网站独立访客(UV):Unique Visitor,访问网站的一个电脑客户端为一个访客,00:00-24:00内相同的客户端只被计算一次。

        常用经验公式:

     (1)一般情况下, 及格的 tps = 并发数 / 03,也就是响应时间低于300ms。

     (2)QPS(TPS),并发数、响应时间三者之间的关系是:

        QPS(TPS)= 并发数 / 平均响应时间

      (3)单台服务器每天PV估算公式:

            每天总PV = QPS 3600 6(或8)

      (4)服务器数量估算公式:

        机器数量=峰值时间每秒QPS / 单台机器的QPS

参考

(1)网站的性能指标 https://blogcsdnnet/lrh329678260/article/details/85247019

(2)性能测试指标 https://wwwcnblogscom/evablogs/p/7922042html

1、减少HTTP请求数量

这主要是修改网站代码,减少外部、CSS、JS等文件数量,手动合并多个CSS/JavaScript文件。IIS那里不用设置。

2、使用CDN

对于小网站来说,这个就免了吧。当然有钱人可以试试,可以从技术上解决用户访问网站响应速度慢的问题。

3、启用内容过期

对于静态文件启用内容过期可以提高访问性能。首先网站的目录要划分合理,、CSS、JavaScript均放在单独目录下,然后在IIS中选择目录,点属性-HTTP头,启用内容过期,可以选择30天后过去,这样,用户浏览器将比较当前日期和截止日期,以便决定是显示缓存页还是从服务器请求更新的页,由于、CSS、JS通常变化较少,因此基本上都从本地缓存读取,从而加快显示速度。

4、启用Gzip压缩

HTTP压缩是在Web服务器和浏览器间传输压缩文本内容的方法。HTTP压缩采用通用的压缩算法如Gzip等压缩HTML、JavaScript或 CSS文件。压缩的最大好处就是降低了网络传输的数据量,从而提高客户端浏览器的访问速度。

使用方法是,右击“网站”->“属性”,选择“服务”。在“HTTP压缩”框中选中“压缩静态文件”,“临时目录”建议单独设置另一个盘的目录下。

之后,IIS管理器中,右击“Web服务扩展”->“增加一个新的Web服务扩展”,在“扩展名”中输入“HTTPCompression”,添加“要求的文件”为C:\WINDOWS\system32\inetsrv\gzipdll,其中Windows系统目录根据您的安装可能有所不同,选中“设置扩展状态为允许”。

最后,使用文本编辑器打开C:\Windows\System32\inetsrv\MetaBasexml,在HcFileExtensions中增加需要压缩的静态文件后缀名,默认为HTML和TXT文件,建议再添加上js、css等,不要添加或ZIP等已经被压缩的文件。

5、将样式文件放在头部

这是基本的HTML代码风格,将所有的CSS文件都放在HTML页面的头部。

6、将脚本文件放在尾部

这也是基本的HTML代码风格,将所有的JavaScript文件都放在HTML页面的尾部。

7、避免CSS表达式

这点很简单,因为大多数人从来不用CSS表达式。

8、使用外部的JavaScript和CSS

将所有的JavaScript和CSS都做成外部文件的形式进行引用,这主要是为了让这些文件可以被浏览器缓存起来,参见第三点的介绍。

9、减少DNS查询

域名的DNS查询会带来额外的访问开销,减少页面内文件的主机域名数量,一个页面的主机域名保持在2-4个以内,这样就不会降低页面的装入速度。

10、压缩JavaScript文件

压缩脚本文件,删除不必要的字符,可以改善加载时间,目前有很多JavaScript文件的压缩工具,我这里有一个GUI界面的JS压缩工具供下载。

11、避免重定向

网页的重定向会带来额外的运行开销,因此要避免页面进行重定向跳转操作。

12、删除重复脚本

一个页面两次包含同一个JavaScript文件会影响加载的性能,因此需要将重复的脚本文件删除。

13、配置ETag

这是一个令人迷惑的问题。理论上说将服务器的ETag删除会提高HTTP请求的性能,但是按照微软官方提供的修改方法配置IIS 60,并没有实际效果,最终我使用了一个remetag,以ISAPI的方式实现了删除ETag的功能。

企业网站作为企业对外的名片之一。那么作为运行网站服务的基石——服务器有哪些性能方面的要求呢?我们平时使用的PC机能作为企业网站的载体吗?

网站服务器是指在互联网数据中心中存放网站的服务器。网站服务器主要用于网站在互联网中的发布、应用,是网络应用的基础硬件设施。这是一种高性能计算机,作为互联网的结点,储存、解决互联网上90%的数据信息。因此,网站服务器也被称作互联网的核心。

服务器的组成与微型机基本上类似,有cpu、硬盘、运行内存、数据总线等。它们是对于实际的网络技术应用特殊设计构思的,因此网站服务器与PC机在解决水平、稳定、系统可靠性、安全系数、扩展性、可管理性等层面存有着挺大的差别。所以我们在搭建企业网站的时候,尽量不要选择普通PC机作为网站服务器。

稳定性方面的需求。PC机是指个人计算机,它在稳定性方面只考虑到绝大多数个人用户对稳定性方面的需求,没有充分考虑到企业用户的这方面需求,所以在稳定性方面,PC机根本不能与专业服务器相比。网站服务器通常要求724不间断正常工作。一旦服务器出了问题,哪怕重启一次都将给企业带来巨大的损失。

可用性方面的需求。可用性是指服务器的各方面的性能。服务器的可用性要明显高于普通PC机的。网站服务器随时随地都可以保证服务项目,并使客户随时随地能够取得服务项目的水平,以及从系统异常中快速恢复正常的水平。高可用性服务器系统应当具有在运作时可对重要部件开展热插拔的水平,如SCSI磁盘阵列,在开关电源依然接入且服务器系统位于正常情况下运作的情形下,能用新磁盘更换问题磁盘;高可用性服务器系统有时候也应用冗余部件。

扩展性方面的需求。在扩展性方面,PC机更是不可与服务器相提并论了。企业用户对服务器的扩展性需求要远比普通用户的扩展性需求高许多,因为企业用户的应用需求都是在不断变化的。随着企业网络应用的增加、网络规模的扩大,都将可能需要提高服务器的性能。这时就可能需要安装更多的内、外部组件,如扩展处理器数量、扩展内行,容量、扩展内/外部硬盘数量、扩展网卡容量,以及扩展其他内/外部板卡设备等。

在管理方面,普通PC机一般是不提供太多的工具软件的,最多是像温度、风扇转速之类的监控,这对于企业服务器来说是明显不够的。在专业服务器中,通常会提供各种功能强大的专业系统监控和网络管理工具。这些专业工具不仅可以全面监控服务器系统本身,而且还可管理连接在服务器上的网络设备,甚至用户。这是普通PC机无法实现的。

网站服务器对网站服务器的系统可靠性、系统可用性、扩展性、便捷性、可管理性等方面需求很高。所以企业在建站时选择服务器,也一定要先了解清楚服务器的性能。

是有直接关系的尤其是服务器性能的好坏带宽大小以及服务器所在机房网络环境,都将直接影响到你网站访问的速度与稳定性

所以在选择服务器时一定要结合网站的情况来判断首先你要根据网站的规模大概判断下用什么样的配置带宽根据网站的访问来源选择合适的机房最后再找符合你条件的IDC公司对比测试最好是让服务商提供一些用户网站做下参考再决定这样的服务器适合你网站使用自然速度与稳定性也可以得到保障

个人观点仅供参考有需要帮忙的话可以来找我交流

在评价WWW服务器性能时,应该了解该测量哪些指标,并确保这些指标能够反映WWW服务器的使用情况。

显然,硬件和操作系统是基准测试的主要领域。同一个高级工作站或一台U N I X机相比,一台只有中档C P U、硬盘不大而内存只有3 2兆的P C机的性能就要差得多了。在不同的WWW基准测试中,不同的操作系统(包括S o l a r i s和Windows NT)的性能得分也是不一样的。

影响WWW服务器性能的另一个因素是连接速度。T 3连接上的服务器向客户机传输WWW页面的速度要大大高于T 1连接上的相同服务器的速度(在测量服务器原始性能时,不考虑客户机的连接)。

还有一个应考虑的因素是服务器可处理用户的数量。这个能力很难测量,因为它取决于服务器的线路速度、客户机的线路速度以及传输的WWW页面的正常大小。测量服务器WWW页面传输能力的重要指标是吞吐能力和响应时间。吞吐能力是某种硬件和软件的组合在单位时间内能够处理H T T P请求的数目。响应时间是服务器处理一个请求所需的时间。这些数值应该处于服务器能够处理的负荷范围之内(包括高峰期)。

最后,系统应客户机的要求所传输的页面的组合和类型也会大大影响服务器的性能。动态页面的内容是应客户机的请求由特定的程序来确定的,静态页面是从磁盘检索所获的固定内容的WWW页面。如果一台服务器主要传输静态页面,其性能要好于传输动态页面的同档服务器,这是因为静态页面传输比动态页面传输所需的计算能力小。在传输动态页面时,不同服务器的性能差异很大。

目前有多种WWW服务器基准测试程序,它们可就很多衡量指标对服务器进行测试,依据这些测试可决定服务器的选择。

web服务器常用性能指标如下:

吞吐量

固定时间间隔内的处理完毕事务个数。通常是1秒内处理完毕的请求个数,单位:事务/秒(tps)。

响应时间一次事务的处理时间。通常指从一个请求发出,到服务器进行处理后返回,再到接收完毕应答数据的时间间隔,单位:毫秒。

CPU占用率1-CPU空闲率,表示CPU被使用情况,反映了系统资源利用情况。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 如何进行网站性能优化

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情