本文目录导航:
如何启动网站性能优化
一、前端优化
网站性能优化是一个很综合的话题,触及到主机的性能和网站前后端程序等各个方面,我只是从实践阅历登程,分享一下自己所尝试过的网站性能优化方法。
之所以在题目上挂一个web2.0,是由于本文更侧重于中小网站的性能优化,我所经常使用的系统也是典型web2.0的LAMP架构。
首先讲讲前端的优化,用户访问网页的期待期间,有80%是出当初阅读器前端,特意是页面和页面中各种元素(图片、CSS、Javascript、flash)的下载之上。
因此在很多状况下,相关于把少量的期间花在艰辛而冗杂的程序改良上,前端的优化往往能起到事倍功半的作用。
雅虎最近将外部经常使用的性能测试工具yslow向第三方地下,并颁布了驰名的网站性能优化的十三条规定,倡导你下载并装置yslow,并作为测评网站优化成果的工具。
上方我挑其中特意有价值的详细说明一下优化的方法:
关于第一次性访问您网站,尚未在阅读器cache中缓存您网站内容的用户,咱们可以做的事件包括:
1)缩小一个页面访问所发生的http衔接次数
关于第一次性访问你网站的用户,页面所发生的http衔接次数是影响性能的一个关键瓶颈。
对策:
-尽量繁复的页面设计,最大水平缩小图片的经常使用,经过丢弃一些不用要的页面特效来缩小javascript的经常使用。
-经常使用一些优化技巧,比如应用图片的背景位移缩小图片的个数;imagemap技术;经常使用Inlineimages将css图片捆绑到网页中。
-尽量兼并js和css文件,缩小独立文件个数。
2)经常使用gzip紧缩网页内容
经常使用gzip来紧缩网页中的静态内容,能够清楚缩小用户访问网页时的期待期间(听说可到达60%)。
干流的web主机都允许或提供gzip紧缩,假设经常使用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)放在其余的子域名下(如)会无利于提高阅读器并行下载网页内容的才干。
关于您网站的经常性访问用户,重要的优化思绪就是最大限制应用用户阅读器的cache来缩小主机的开支。
1)在header中参与过时期间(ExpiresHeader)
在header中给静态内容参与一个较长的过时期间,这样可以经常使用户今后访问只读取缓存中的文件,而不会与主机发生任何的交互。
不过这样做也存在一些疑问,当图片、CSS和js文件降级时,用户假设不刷新阅读器,就无法取得此降级。
这样,咱们在对图片、css和js文件修正时,必定要启动重命名,才干保障用户访问到最新的内容。
这或者会给开发形成不小的费事,由于这些文件或者被站点中的许多文件所援用。
flickr提出的处置方法是经过urlrewrite使不同版本号的URL理想上指向同一个文件,这是一个痴呆的方法,由于url级别的操作效率是很高的,可以给开发环节提供不少便利。
要了解为什么这样做,必定要了解阅读器访问url时的上班机制:
a.第一次性访问url时,用户从主机段失掉页面内容,并把关系的文件(images,css,js)放在高速缓存中,也会把文件头中的expiredtime,lastmodified,ETags等关系消息也一起保管上去。
我的阅历,假设或者,尽量遵照此准则给静态文件参与过时期间,这样可以大幅度缩小用户对主机资源的重复访问。
2)将css和js文件放在独立外部文件中援用
将css和js文件放在独立文件中,这样它们会被独自缓存起来,在访问其余页面时可以从阅读器的高速缓存中间接读取。
一些网站的首页或者是例外的,这些首页的自身阅读或者并不大,但却是用户访问网站的第一印象以及导向到其余页面的终点,也或者这些页面自身经常使用了少量的ajax部分刷新及技术,这时可以将css和js文件间接写在页面中。
3)去掉重复的脚本
在IE中,蕴含重复的js脚本会造成阅读器的缓存不被经常使用,细心审核一下你的程序,去掉重复援用的脚本应该不是一件很难的事件。
4)防止重定向的出现
除了在header中人为的重定向之外,网页重定向常在不经意间出现,被重定向的内容将不会经常使用阅读器的缓存。
比如用户在访问,主机会经过301转向到/,在前面加了一个“/”。
假设主机的性能不好,这也会给主机带来额外的累赘。
经过性能apache的alias或经常使用mod_rewrite模块等方法,可以防止不用要的重定向。
还有一些,比如经常使用CDN散发机制、防止CSS表白式等、防止经常使用ETags等,由于不太罕用,这里就不再赘述了。
做完了上述的优化,可以试着用yslow测试一下网页的性能评分,普通都可以到达70分以上了。
当然,除了阅读器前端和静态内容的优化之外,还有针对程序脚本、主机、数据库、负载的优化,这些更深档次的优化方法对技术有更高的要求。
本文的后半部分将重点讨论后端的优化。
二、后端优化
上次写完web2.0网站前端优化篇之后,不时想写写后端优化的方法,当天终于有期间将思绪整顿了进去。
前端优化可以防止咱们形成无谓的主机和带宽资源糜费,但随着网站访问量的参与,仅靠前端优化曾经不能处置一切疑问了,后端软件处置并行恳求的才干、程序运转的效率、配件性能以及系统的可裁减性,将成为影响网站性能和稳固的关键瓶颈所在。优化系统和程序的性能可以从以下的方面来入手:
1)apache、mysql等软件的性能的优化
虽然apache和mysql等软件在装置后经常使用的自动设置足以使你的网站运转起来,然而经过调整mysql和apache的一些系统参数,还是可以谋求更高的效率和稳固性。
这个畛域中有很多专业的文章和论坛(比如:),要想把握也要求启动深化的钻研和通常,这里就不重点讨论了。
2)运行程序环境减速
这里仅以我最常运行的php开发环境为例,有一些工具软件可以经过优化PHP运转环境来到达提速的目标,其基本原理大抵是将PHP代码预编译并缓存起来,而不要求扭转任何代码,所以比拟繁难,可以将php的运转效率优化50%以上。比拟罕用的php减速工具有:APC(、TurckMMCache()、phpaccelebrator(),还有不要钱的ZendPerformanceSuite
3)将静态内容和灵活内容离开处置
apache是一特性能完善但比拟宏大的webserver,它的资源占用基本上和同时运转的进程数呈正比,对主机内存的消耗比拟大,处置并行义务的效率也普通。
在一些状况下,咱们可以用比拟轻量级的webserver来host静态的图片、样式表和javascript文件,这样可以大大优化静态文件的处置速度,还可以缩小对内存占用。
我经常使用的webserver是来自俄罗斯的nginx,其余选用打算还包括lighttpd和thttpd等。
4)基于反向代理的前端访问负载平衡
当一台前端主机无余以接待用户访问时,经过前端机成功web访问的负载平衡是最极速可行的打算。
经过apache的mod_proxy可以成功基于反向代理的负载平衡,这里介绍经常使用nginx做代理主机,处置速度较apache更快一些。
5)运行缓存技术提高数据库效劳,文件缓存和散布式缓存
数据库访问处置并发访问的才干是很多网站运行的关键瓶颈,在想到经常使用主从结构和多farm的方式构建主机集群之前,首先应该确保充沛经常使用了数据库查问的缓存。
一些数据库类型(如mysql的innoDB)自身内置对缓存的允许,此外,还可以应用程序方法将罕用的查问经过文件或内存缓存起来。
比如经过php中的ob_start和文件读写函数可以很繁难的成功文件方式的缓存,而假设你领有多台主机,可以经过memcache技术经过散布式共享内存来对数据库查问启动缓存,不只效率高而且裁减性好,memcache技术在livejournal和等出名网站运行中都失掉了测验。
6)主机运转形态的检测,找到影响性能的瓶颈所在
系统优化没有与日俱增的方法,要求经过检测主机的运转形态来及时发现影响性能的瓶颈,以及或者存在的潜在疑问,由于网站的性能,永远取决于木桶中的短板。可以编写一些脚原本检测web服务的运转,也有一些开源的软件也提供了很好的性能
7)良好的裁减架构是稳固和性能的基础
一些技巧和窍门可以帮你渡过眼前的难关,但要想使网站具有接待大规模访问的才干,则要求从系统架构上启动彻底的布局,好在很多先人自私的把他们架构
网站的阅历分享给咱们,使咱们可以少走甚多弯路。我最近读到的两篇有启示的文章:
-从LiveJournal后盾开展看大规模网站性能优化方法
-Myspace的六次重构
最后不得不提到程序编码和数据库结构对性能的影响,一系列蹩脚的循环语句,一个不正当的查问语句、一张设计不佳的数据表或索引表,都足以会使运行程序运转的速度成倍的降低。
造就全局思索的才干,养成良好的编程习气,并对数据库运转机制有所了解,是提高编程品质的基础。
如何处置nginx504gatewaytime-out失误
处置nginx 504 Gateway Time-out失误的方法
一、参与代理衔接的超时期间
1. 关上Nginx性能文件。
2. 找到与代理关系的性能段,参与或修正`proxy_connect_timeout`和`proxy_read_timeout`的值。
例如,将它们设置为更长的超时期间。
二、优化后端服务性能
1. 审核后端服务的性能,确保其能够及时处置恳求。
2. 对后端服务启动调优,包括优化数据库查问、代码优化等。
三、调整Nginx主机性能设置
1. 调整Nginx的上班进程数、衔接数等参数,以顺应更高的并发恳求。
可以经过修正`worker_processes`和`worker_connections`的值来成功。
2. 重启Nginx主机以使新的性能失效。
四、负载平衡和裁减资源
1. 假设疑问是由于主机资源无余造成的,思索经常使用负载平衡技术扩散恳求压力。
2. 依据要求裁减主机资源,如参与CPU、内存或带宽等。
nginx 504 Gateway Time-out失误通常是由于Nginx主机作为网关或反向代理时,期待后端主机照应的期间过长而造成的。处置这个疑问可以从以下几个方面入手:
一、调整超时期间:经过参与Nginx代理衔接的超时期间,可以给后端主机更多的期间来处置恳求。
这是最间接的方法,但需留意,过长的超时期间或者造成用户体验降低。
二、优化后端服务性能:假设后端服务处置速渡过慢,也会造成Nginx期待期间过长。
因此,优化后端服务的性能是关键,包括数据库优化、代码优化等。
三、调整Nginx性能设置:经过调整Nginx的上班进程数、衔接数等参数,可以提高Nginx的处置才干。
这样即使后端服务处置速度慢,Nginx也能更好地应答并发恳求。
四、负载平衡和裁减资源:当主机资源无余时,思索经常使用负载平衡技术扩散恳求压力。
同时,依据实践需求裁减主机资源,如参与CPU、内存等,以提高主机的处置才干。
经过以上方法,通常可以有效地处置nginx 504 Gateway Time-out失误。
前端开发和后端开发有什么区别
前端开发与后端开发的区别重要体如今以下几个方面:一、职责范围的区别1. 前端开发专一于用户可以间接看到和与之交互的界面。
2. 后端开发努力于成功运行程序的逻辑、数据库交互和主机性能等,这些对用户是无法见的。
二、技术栈的区别1. 前端开发者通常熟练把握HTML5、CSS3、Javascript及其衍生库(如jQuery、Bootstrap)和框架(如AngularJS、React、)。
2. 后端开发者知晓主机端编程言语,如Java(触及Spring、Hibernate等技术)、Python(Django、Flask框架)、或PHP等,以及关系的数据库技术(如MySQL、PostgreSQL)和主机性能(如Apache、Nginx)。
三、上班流程的区别1. 前端开发触及用户体验和界面设计,要求良好的审美和用户交互设计才干。
2. 后端开发关注数据处置、业务逻辑成功和系统性能优化,要求较强的逻辑思想和疑问处置才干。
四、性能优化的重点1. 前端开发要求关注页面加载速度和交互性能,优化HTML、CSS和Javascript代码。
2. 后端开发要求优化数据库查问效率、主机负载平衡和运行程序的照应期间。
五、协作角色的区别1. 前端开发通常与UI/UX设计师严密协作,确保设计稿的高效成功。
2. 后端开发常与数据库治理员、系统架构师以及测试工程师等多方面人员协作,以确保系统的稳固性和安保性。
在职业生涯开展上,前端开发和后端开发也各有专业深化的方向,但把握两者的基础常识关于全栈开发来说是十分有协助的。