首页
技术笔记
网址导航
Json在线解析
二维码
Ip地址查询
在线流程图
新用户注册
|
会员登录
在线工具
开发笔记
毒鸡汤
网址导航
免费在线流程图
15赞
747
当前位置:
开发笔记
>
编程语言
> 正文
改进Web站点性能的五个方面
作者:mobiledu2402852357 | 2021-10-27 20:07
改进Web站点性能的五个方面
对一个电子商务网站来说,需要运用最少的带宽和服务器资源,为更多的客户提供更快捷的服务。而用户对Web站点的满意度,主要以访问速度来衡量。
从用户角度来说,Web站点只有“快”和“慢”之分;用户往往并不要求实现大容量数据传输,而是希望网站在保证性能的同时,能够容纳更多的访问者。Web用户所关心的问题的实质是访问时间。从网络维护角度说,导致时延的潜在因素是多方面的,大致来讲,可以从5个方面改进Web站点的性能:缓冲、压缩、CPU优化、运用内容分发网络(CDN)及客户端软件。
当一个站点访问用户过多时,服务器会超载,站点速度也会随之降低。若增加服务器并运用负载均衡或群集方案,可增加网站访问量,站点的性能也能达到可以接受的水平。但往往出现的情况是,终端用户能够获取较快的访问速度,而预期的访问容量达不到,因此应首先考虑改进网站性能。通过限制对服务器的访问量、避免服务器出现全面缓冲,或者采用纯CDN模式,可以提高页面提交速度,站点能容纳更多的用户。
优化服务器配置
运用更快速的磁盘和更好的网络存取机制,能明显改进网站访问速度。可以运用特定网卡(如Akamba公司的Velobahn)来改进服务器的速度,或是采用相关技术优化网络接口卡的性能。这类方案的核心是设法减轻Web服务器CPU的负荷,使其从繁琐的网络协议处理中“解脱”出来,而集中于页面处理和服务提供。
要尽可能地提升服务器性能,运用成熟的Web服务器加速软件必不可少,在未来几年中,成本低廉、具备高度优化、嵌入式操作系统的Web服务器工具将会出现。
运用缓冲机制
优化网络可升缩性和性能的另一方法是在服务器外围增加缓冲机制。比较流行的方案是为Web服务器增加反向缓冲代理,使服务器能够顺利实现已创建页面的传输,同时在创建动态页面过程中减轻服务器负荷。
缓冲机制比较容易实现,可以自行构建代理程序,也可采用其它基于硬件的产品,如Cobalt Networks的产品CacheRaQ、CacheFlow公司的高端缓冲工具CacheOS。不过购买时须注意,很多硬件缓冲产品实际上是在Linux服务器中运行相关软件来实现缓冲功能的。由于缓冲机制通常不能很好地处理动态生成内容,现在运用已呈下降趋势。对于实时动态页面,若运用缓冲,显示速度会明显减慢。
以用户为中心
通信传输是网络要解决的最重要课题,任何网络厂商都得面对通信和路由方面的难题,要使一个网站能够“贴近”用户,就得在通信传输方案方面下功夫。
可以在访问区间设置多服务器,并运用全局负载均衡设备,如Radware公司的Web服务器导向器优化路由,使用户能够访问到就近站点;也可以运用CDN,如Akamai或SolidSpeed方案,通过将大量动态页面对象,如图像和PDF文件置于靠近用户的缓冲器中,使用户实现对网站内容的就近访问。
若充分运用边缘网络系统(如CDN),Web页面内容会很快到达用户端,面对通信方面的问题也会少得多。不过CDN服务实现成本往往很高,而且操作中须将加速页面重写入相关的缓冲目标,造成一定时延。最近发布的边缘包含(ESI)规范,能够很好地解决在运用CDN时产生的动态页面内容的处理问题。一旦网络成本下降,这类方案将使边缘网传输成为主流。
减小数据量
对传输数据进行压缩,能提高访问速度。一般来说,大量的Web页面传输内容都由图像文件和其它二进制格式文件组成;现在的Web开发人员正设法减少GIF文件对颜色的使用,并调整JPEG格式文件大小。
虽然更高一级的图片文件压缩规范JPEG2000出台尚需时日,但浏览器功能的不断改进使网络中图形图像的快速显示成为可能。对于需要传送大容量图形文件的用户来说,可以不拘泥于标准Web格式而选择更高级的图像格式,如LizardTech公司针对商业用途发布的MrSid和DjVU标准。
随着HTML文档日趋复杂和JavaScript的大量运用,通过减少HTML或JavaScript文档中的空白来压缩页面,能大大减小文件尺寸。基于这种方法,支持HTTP1.1的浏览器能够同时支持GZIP文件编码,在传输前对文件进行压缩。一些Web服务器如Microsoft IIS5.0支持这种方案。
一般理解认为,数据量小即意味着网站传输速度快,然而具体到某个传输对象,必须考虑压缩/解压的时间因素,高度压缩文件用到带宽可能较少,但却不一定能快速提交到终端用户。
不可忽视客户端因素
没有协调一致的客户端操作相配合,压缩、分发、缓冲及其它一些方案终究不能发挥作用。Web用户访问的模式一般是“点击-等待-空闲-点击”,这事实上可以利用闲置时间来下载内容。如果在客户端安装这类软件,能大大提高网站性能。
最后,客户终端系统配置是关键,站点管理员几乎对客户端设置不能施加任何影响。页面不能快速提交,或许原因完全在客户端:终端系统配置脆弱,应用程序运行过多,磁盘存取速度太慢,或是浏览器速度低下。例如,人们在讨论站点速度时,往往忽略了浏览器这一重要因素;提起浏览器,人们自然会想起IE或Netscape,而事实上Opera Software公司的5.0版浏览器速度要快得多。
(出处:中国计算机报)
推荐阅读
程序员
AWS创建角色 - 已禁止字段
如何解决《AWS创建角色-已禁止字段》经验,为你挑选了1个好方法。 ...
[详细]
程序员
忽略记录器语句上的硬编码字符串 - IntelliJ
如何解决《忽略记录器语句上的硬编码字符串-IntelliJ》经验,为你挑选了0个好方法。 ...
[详细]
程序员
如何使用CSS仅利用HTML选项元素的第一个字母?
如何解决《如何使用CSS仅利用HTML选项元素的第一个字母?》经验,为你挑选了1个好方法。 ...
[详细]
程序员
删除页脚下方的空白区域
如何解决《删除页脚下方的空白区域》经验,为你挑选了3个好方法。 ...
[详细]
程序员
Ansible - 打印消息 - 调试:msg ="line1 \n {{var2}} \n line3 with var3 = {{var3}}"
如何解决《Ansible-打印消息-调试:msg="line1\n{{var2}}\nline3withvar3={{var3}}"》经验,为你挑选了3个好方法。 ...
[详细]
程序员
如何在Fish shell中提取子串?
如何解决《如何在Fishshell中提取子串?》经验,为你挑选了1个好方法。 ...
[详细]
程序员
在matplotlib中正确对齐标签
如何解决《在matplotlib中正确对齐标签》经验,为你挑选了1个好方法。 ...
[详细]
程序员
在JavaScript中连接自定义对象数组的字符串
如何解决《在JavaScript中连接自定义对象数组的字符串》经验,为你挑选了1个好方法。 ...
[详细]
程序员
有没有更好的方法来构建我的NPM脚本,使它们更具可读性?
如何解决《有没有更好的方法来构建我的NPM脚本,使它们更具可读性?》经验,为你挑选了0个好方法。 ...
[详细]
程序员
将节点代码库迁移到TypeScript:全局范围?
如何解决《将节点代码库迁移到TypeScript:全局范围?》经验,为你挑选了0个好方法。 ...
[详细]
程序员
Spark:没有注册输出操作,因此无需执行任何操作
如何解决《Spark:没有注册输出操作,因此无需执行任何操作》经验,为你挑选了1个好方法。 ...
[详细]
程序员
如何使用Gulp 4 async/await?
如何解决《如何使用Gulp4async/await?》经验,为你挑选了1个好方法。 ...
[详细]
程序员
无法将'int(*)[size]'转换为'int **'
如何解决《无法将'int(*)[size]'转换为'int**'》经验,为你挑选了1个好方法。 ...
[详细]
程序员
在Linux中使用DMA的最简单方法
如何解决《在Linux中使用DMA的最简单方法》经验,为你挑选了0个好方法。 ...
[详细]
程序员
来自Google地图的NullPointerException
如何解决《来自Google地图的NullPointerException》经验,为你挑选了2个好方法。 ...
[详细]
程序员
hub.docker.com的自托管替代方案?
如何解决《hub.docker.com的自托管替代方案?》经验,为你挑选了1个好方法。 ...
[详细]
程序员
如何调试鱼脚本?
如何解决《如何调试鱼脚本?》经验,为你挑选了1个好方法。 ...
[详细]
程序员
Swagger UI/Editor like page - 添加到我的网站
如何解决《SwaggerUI/Editorlikepage-添加到我的网站》经验,为你挑选了1个好方法。 ...
[详细]
程序员
Laravel 5.1 @can,如何使用OR子句
如何解决《Laravel5.1@can,如何使用OR子句》经验,为你挑选了3个好方法。 ...
[详细]
程序员
我如何解决java2d中的ClassCastException(Bug-ID 7172749)
如何解决《我如何解决java2d中的ClassCastException(Bug-ID7172749)》经验,为你挑选了1个好方法。 ...
[详细]
吐了个 "CAO" !
吐个槽吧,看都看了
会员登录
|
用户注册
mobiledu2402852357
这个屌丝很懒,什么也没留下!
关注作者
Tags | 热门标签
actionscrip
bash
c#
c++
c语言
erlang
flutter
go
golang
java
javascript
lua
node.js
perl
php
python
scala
typescript
RankList | 热门文章
1
如何在我的Mac OSX上安装PHP扩展"pcntl"
2
spring jdbctemplate get byte array
3
SQL datetime比较
4
按Java 8中的Map列表分组
5
Python字符串文字串联
6
doctrine ORM count arraycollection in where condition
7
SPARQL的正则表达式
8
在php中解码json就像字符串一样
9
尝试在后台线程中加载/设置场景导致"OpenGL错误0x0502 in - [CCSprite draw] 530"
10
java字符串操作,将多个斜杠更改为一个斜杠
11
无法使用相同的密钥发送带有参数的改装2.0多部分请求
12
Yii2 - 获取未知属性:yii\console\Application :: user
13
如何在Ubuntu机器上安装TortoiseSVN存储库?
14
R通过年份日期值从数据帧过滤中获取子集
15
传入函数作为输入和返回功能
16
Angular.foreach异步回调不起作用
17
Sitecore中admin/b帐户的路径在哪里?
18
在文档中对API方法进行分组 - 是否存在一些自定义属性
19
如何搜索以某个单词开头或包含的单词
20
Android中图像锐化的颜色矩阵
DevBox开发工具箱 | 专业的在线开发工具网站
京公网安备 11010802040832号
|
京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有