一、前端优化
网站性能优化是一个很综合的话题,涉及到服务器的配置和网站前后端程序等各个方面,我只是从实际经历出发,分享一下自己所尝试过的网站性能优化方法。之所以在标题上挂一个web2.0,是因为本文更偏重于中小网站的性能优化,我所使用的系统也是典型web2.0的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(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中人为的重定向之外,网页重定向常在不经意间发生,被重定向的内容将不会使用浏览器的缓存。比如用户在访问www.xxx.com,服务器会通过301转向到www.xxx.com/,在后面加了一个“/”。如果服务器的配置不好,这也会给服务器带来额外的负担。通过配置apache的 alias或使用mod_rewrite模块等方法,可以避免不必要的重定向。
还有一些,比如使用CDN分发机制、避免CSS表达式等、避免使用ETags等,因为不太常用,这里就不再赘述了。
做完了上述的优化,可以试着用yslow测试一下网页的性能评分,一般都可以达到70分以上了。
当然,除了浏览器前端和静态内容的优化之外,还有针对程序脚本、服务器、数据库、负载的优化,这些更深层次的优化方法对技术有更高的要求。本文的后半部分将重点探讨后端的优化。
二、后端优化
上次写完web2.0网站前端优化篇之后,一直想写写后端优化的方法,今天终于有时间将思路整理了出来。
前端优化可以避免我们造成无谓的服务器和带宽资源浪费,但随着网站访问量的增加,仅靠前端优化已经不能解决所有问题了,后端软件处理并行请求的能力、程序运 行的效率、硬件性能以及系统的可扩展性,将成为影响网站性能和稳定的关键瓶颈所在。优化系统和程序的性能可以从以下的方面来入手:
1)apache、mysql等软件的配置的优化
尽管apache和mysql等软件在安装后使用的默认设置足以使你的网站运行起来,但是通过调整mysql和apache的一些系统参数,还是可以追求更高的效率和稳定性。这个领域中有很多专业的文章和论坛(比如: http://www.mysqlperformanceblog.com/),要想掌握也需要进行深入的研究和实践,这里就不重点讨论了。
2)应用程序环境加速
这里仅以我最常应用的php开发环境为例,有一些工具软件可以通过优化PHP运行环境来达到提速的目的,其基本原理大致是将PHP代码预编译并缓存起来,而不需要改变任何代码,所以比较简单,可以将php的运行效率提升50%以上。比较常用的免费php加速工具有:APC( http: //pecl.php.net/package-info.php?package=APC)、Turck MMCache( http://turck-mmcache.sourceforge.net)、php accelebrator(www.php-accelerator.co.uk),还有收费的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)良好的扩展架构是稳定和性能的基础
一些技巧和窍门可以帮你度过眼前的难关,但要想使网站具备应付大规模访问的能力,则需要从系统架构上进行彻底的规划,好在很多前人无私的把他们架构
网站的经验分享给我们,使我们可以少走甚多弯路。我最近读到的两篇有启发的文章:
- 从LiveJournal后台发展看大规模网站性能优化方法
- Myspace的六次重构
最后不得不提到程序编码和数据库结构对性能的影响,一系列糟糕的循环语句,一个不合理的查询语句、一张设计不佳的数据表或索引表,都足以会使应用程序运行的速度成倍的降低。培养全局思考的能力,养成良好的编程习惯,并对数据库运行机制有所了解,是提高编程质量的基础。
相关推荐
如何处理MIGO取消物料凭证报错:“只是可能对有相同的价格控制进行倒记账(本月S,前月V)” & “仅在 QM 中修改物料质量检验库存”
记录一次处理MM模块的报错。这次连续处理了两个错误,“只是可能对有相同的价格控制进行倒记账(本月S,前月V)” & “仅在 QM 中修改物料质量检验库存”。把过程和操作步骤记录下一。方便日后回头查找。
后端项目性能优化总结
java后端性能优化总结
图像识别火灾检测系统实战:从火焰特征到YOLO部署全解析
计算机视觉技术正深入改变传统消防的感知方式。图像识别火灾检测利用摄像头采集的视频流,通过颜色、动态和形态特征分析,实现早期火情的自动发现与定位。其核心原理在于,火焰在视觉上具有独特的颜色分布、闪烁特性和轮廓变化,借助目标检测模型如YOLO,可在复杂场景中区分真实火焰与干扰物。这项技术广泛应用于仓库、园区、隧道等大空间场所,是智慧消防的重要支撑。本文从火焰视觉特征、数据集构建、模型选型与系统架构设计出发,结合部署实践中的误报与算力优化经验,为开发者提供一套可落地的视频火焰检测方案。
后端性能优化的实践与经验分享
在当今的互联网环境中,后端性能优化是确保卓越用户体验的关键。一个快速响应的网站或应用程序不仅能提升用户满意度,还能直接影响业务的转化率和品牌形象。以下是四个关键的后端性能优化领域:数据库优化、缓存策略、服务器配置优化和代码优化。数据库是应用的心脏,优化数据库性能至关重要。
别再只调陀螺仪了!用OpenCV实现基于透视变换的EIS防抖,实测效果媲美手机
本文深入探讨了基于透视变换的EIS电子稳像技术,通过OpenCV实现高阶防抖算法,效果媲美主流手机厂商方案。详细解析了传统旋转平移模型的局限性,并展示了透视变换在复杂场景下的优势,包括数学原理、OpenCV实战代码及性能优化技巧,为视频防抖提供了专业解决方案。
深入GD32/STM32引脚复用:你的JTAG/SWD接口是怎么‘消失’的?一次讲清原理与预防
本文深入解析GD32/STM32调试接口(JTAG/SWD)突然失效的原理与预防措施。通过分析MCU启动流程、引脚复用机制及典型错误代码模式,揭示调试接口'消失'的根本原因,并提供硬件设计检查清单、软件防护代码及开发流程优化方案,帮助开发者有效避免烧录失败问题。
后端性能优化的常见手段有哪些?
优先解决瓶颈:80%的性能问题通常集中在数据库和网络IO。分层实施策略:从代码优化到架构扩展逐级推进,避免过度设计。持续监控迭代:建立自动化告警机制(如CPU使用率>80%触发通知),结合业务增长动态调整方案。通过上述多维度的系统化优化,可显著提升吞吐量、降低延迟,构建高可用、高扩展的后端服务体系。
sdc时钟约束2——多驱动时钟
sdc 多驱动时钟 master_clock
网站优化经验之谈就是关于网站代码的简化
作为网站SEOer对于代码必须要有所了解,这是做网站优化的必备要素之一 网站推广要想获得好的绩效,源代码是很关键 挑剔的搜索引擎蜘蛛对于简洁的网站代码是情有独钟的 那么怎样来进行网站代码减法呢?今天笔者要和大家分享的网站优化经验之谈就是关于网站代码的简化 第一,HEAD部分代码规范化 ...
华为CNA VRM搭建(使用vmware worfstartion搭建)
华为CNA和VRM在 vmware workstation安装使用
点云从入门到精通技术详解100篇-基于三维点云的机器人抓取位姿检测(续)
集到的深度信息会存在噪点,因此需要将生成的场景点云进行预处理,获得平滑、降采样处理场景点云,本文设计的预处理操作更能从冗杂的场景点云中提取清晰、平滑的目标点云,便于后续的抓取位姿采样,提高后续算法的处理效率。因此需要对场景点云进行适当的分割,仅保留目标物体的点云,整个过程可以通过。场较小时,空间中的点云密度会更加提高;觉子系统的效率,再保持全局点云几何形状不改变的前提下,通过对目标点云进行。体素降采样可以快速地减少点云数据并同时保持点云的形。个点,由于我们实施抓取的目标物体只占整个场景点云图的一部分,
个人博客网站优化经验
最近越来越发现打开网站越来越慢,用屁股想我都知道是没用的,或者花里胡哨的太多了。着手开始搞!一搜,还真有这方面的插件,那我肯定不自己动手了。我先用的HummingBird,更多功能还有收费,果断删掉换成了Autoptimize。真香。设置步骤如下: JS优化选项:优化js代码 打钩 Aggregate JS-files? 打钩 也聚合内联 JS 吗? 打钩其他的一律没动,因为我试了一晚上,这...
基于STM32F103的智能门禁门锁门卫系统设计
本文设计了一种基于STM32F103单片机的智能门禁系统,集成了密码、射频IC卡和指纹识别三种验证方式。系统采用模块化设计,包含MFRC522射频模块、AS608指纹模块、矩阵键盘、OLED显示和舵机控制等硬件,实现了身份验证、密码修改、IC卡/指纹管理以及安全防护功能。测试结果表明系统响应迅速(密码验证250ms、指纹验证600ms)、功耗低(待机50mA),且具备掉电密码保存功能。该系统操作简便、功能完善,适用于家庭和办公场所,具有较高实用价值。未来可扩展远程控制、人脸识别等功能以进一步提升智能化水平。
我的个人站长经验分享——网站优化常用步骤
新的里程,我的新网站的百度路:我的站长经验(垃圾中的战斗圾) 百度不给力,就要自己想招,自己更努力。相信付出总会有回报。 最开始半个月都在优化网站内部,模版等等,这一部对于网站来说还是比较重要的,新站应该迎合蜘蛛,而不是会员,因为新站没会员,是希望蜘蛛的光临,对吧! 首先:使用百度工具来检查一下自己的问题,按照问题来解决自己的网站问题,如果不
Statistics and Machine Learning Toolbox
Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具
lwip-2.0.3
lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。
企业网站优化的一些经验
企业网站优化的一些经验 关于企业网站的一些优化,我想谈一些自己的看法。每个企业的网站主要为了宣传自己的产品或服务而建立一个网站,主要主要考虑到这些产品和服务怎么在合理的网站结构,充分展示出产品和服务的优势,并能能在搜索引擎比较好的排名。 一个企业网站年的优化,主要分为内部优化和外部优化。 内部优化主要包括: 1网站内容:让用户一看就是看他所想要的东西,那么在内容上,你可以推荐一些相关的内容信息那么你的用户体验就提高了很多了。 2.栏目或文章标题:标题应该尽量和关键字相关,这样有利于提高内容的关键字在
IEM模型,地表粗糙度模拟
利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟
网站的优化的点滴经验
本人做了一个网站 http:// www.tianqizx.cn 心血花了不少,效益毫不见长。不过没有关系,以公益为主嘛。虽然没有效益,还是有一点小小的经验。 1,网站的推广。以前也曾经傻乎乎地去一些什么流量交换网站。这其实就是骗人骗自己。不是真实的流量,再高有什么用呢?也曾经去一些论坛发帖子,介绍自己的网站。其实这也没有用。别人就算从论坛过来了,他也不是你的目标人群。
Probability and Statistics - 4th edition
Probability and Statistics - 4th edition
[网站优化]SEO经验总结(转)
我的网站淘引擎http://www.taoyinqing.com终于被搜索引擎收录了,现在总结一下经验,给各位新开站的站长做个参考。一. 选好关键字。关键字是搜索引擎找到我们的网站的关键。所以我们一定要先给自己的网站设定好一个或几个关键字。关键字不易太多,以5-10个为宜。选择关键字前可以先查询一下和你网站相关的关键字热度排行,选取热度比较高的关键字。二. 关键字的使用,关键字的使用要自然,切不可
网站前端优化一些小经验
http://blog.163.com/zhang-_-jie/ /** *作者:张荣华 *日期:2008-12-01 **/ 乘着第3届d2论坛的顺利结束的秋风,我也来分享一下自己在前端优化方面的一些些小经验,其实这些经验本身都是来自yahoo的优化原则,不过经 过ahuaxuan自身的实践和再次的思考,把原来的原则都进行了分组和分析.不过由于ahuaxu
网站优化加速经验总结
本博客旨在整理一些网站优化的方法: (1):减小网站页面中图片的大小,具体可以通过压缩图片以及减小图片像素值来达到 在线ps地址:http://www.uupoop.com/ 可通过在线ps减小图像像素值 改图宝:http://www.gaitubao.com/ 通过改图宝压缩图像占用空间大小 无损压缩大师:http://www.wmzhe.com/soft-3785...
高效编写与优化PHP网站源码的实用技巧与经验分享
在开发PHP网站时,源码的质量直接决定了网站的性能和可维护性。今天,我将分享一个实际项目中的经验,探讨如何高效地编写和优化PHP网站源码。我们来看一个基本的PHP网站结构。通常,一个PHP网站会包含以下几个主要部分:配置文件、核心功能文件、视图文件和数据库操作文件。在开发初期
[转]分享我的网站优化经验及学习方法,欢迎大家来探讨
http://topic.youkuaiyun.com/u/20080804/09/A55010C6-B4D8-4E8D-A0C1-7669F5E57D28.html从做我的网站到现在已经有2年2个月了,这么长的时间里再菜的鸟也会积累一些相关的 经验呵呵,下面从以下几个方面来讨论 HTML: 1,整站DIV+CSS步局,虽然写起来很痛苦,注意还要兼容FIERFOX浏览器 css: 1,通常我写一个通用的C
实战经验:MySQL 构建高并发网站性能优化
2019独角兽企业重金招聘Python工程师标准>>> ...
6232



被折叠的 条评论
为什么被折叠?



