当前位置: 首页 > SEO学院SEO知识

如何进行网站性能优化

来源:未知 浏览量:397次

  一、前端优化

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

如何进行网站性能优化

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

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

如何进行网站性能优化

  对策:

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

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

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

  2) 使用gzip压缩网页内容

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

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

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

  4)使JS文件内容最小化

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

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

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

  对于您网站的经常性访问用户主要的优化思路就是最大限度利用用户浏览器的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分以上了。

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

  二、后端优化

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

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

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

  2)应用程序环境加速

  这里仅以我最常应用的php开发环境为例有一些工具软件可以通过优化PHP运行环境来达到提速的目的其基本原理大致是将PHP代码预编译并缓存起来杭州网站的优化其基本原理大致是将PHP代码预编译并缓存起来而不需要改变任何代码所以比较简单可以将php的运行效率提升50%以上。比较常用的php加速工具有:APC( http: //pecl.php.net/package-info.php?package=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和Craigslist.org等知名网站应用中都得到了检验。

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

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

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

展开全部内容