网站性能优化有哪些方法

news/2024/5/11 2:46:41/文章来源:https://blog.csdn.net/weixin_30498807/article/details/98821816

网站性能优化有哪些方法

一、总结

一句话总结:

web前端性能优化:浏览器访问优化、CDN加速、反向代理
应用服务器性能优化:分布式缓存、异步操作、使用集群、代码优化

 

web前端性能优化方法有哪些
1. 浏览器访问优化:减少http请求,使用浏览器缓存,CSS与JS位置,减少Cookie传输
2. CDN加速:将访问频度高的静态资源放到CDN中
3. 反向代理:所有请求到达的第一层都是反向代理服务器,隔离了用户和网站服务器,将静态资源缓存在反向代理服务器,减轻Web服务器压力,提升访问速度

 

应用服务器性能优化主要方法
1. 分布式缓存:分布式缓存—Memcached,分布式内存对象缓存系统,K/V存储
2. 异步操作:可使用消息队列将请求调用异步化,发送的请求发送给消息队列后立即返回,再由消息队列的消费者进程从消息队列中获取数据,异步写入数据库;
3. 使用集群:在高并发下,可使用负载均衡技术构建应用服务器集群,将请求分发到多台应用服务器来处理,降低单台服务器压力,提升响应速度;
4. 代码优化:多线程,资源复用,数据结构,垃圾回收

 

1、web前端性能优化方法有哪些?

1. 浏览器访问优化:减少http请求,使用浏览器缓存,CSS与JS位置,减少Cookie传输
2. CDN加速:将访问频度高的静态资源放到CDN中
3. 反向代理:所有请求到达的第一层都是反向代理服务器,隔离了用户和网站服务器,将静态资源缓存在反向代理服务器,减轻Web服务器压力,提升访问速度

 

2、浏览器访问优化的主要方法和原因是什么?

减少http请求:合并CSS、JS文件,合并图片(可通过CSS偏移来解决显示问题):HTTP无状态,每次请求服务端都需要启动独立线程去处理,开销较大
使用浏览器缓存:静态资源更新频度低,不宜每次都重新获取
CSS与JS位置:浏览器是下载完全部CSS后才会对页面进行渲染,加载JS后则立即执行:一般将CSS放在页面最上面,JS放在页面底部
减少Cookie传输:Cookie会包含在每次的请求和响应中,太大的Cookie会影响数据传输

 

3、反向代理的作用是什么?

保护网站安全:所有请求到达的第一层都是反向代理服务器,隔离了用户和网站服务器
缓存:将静态资源缓存在反向代理服务器,减轻Web服务器压力,提升访问速度
负载均衡:应用服务器有多台的话,使用反向代理做负载均衡是不错的选择,如Nginx

 

4、网站性能优化最先想到的方法是什么?

考虑使用缓存:只要是缓存,就会涉及到缓存未命中与缓存失效问题,因此,缓存中的数据一般都是读取比例很高,很少变化的数据

 

5、不合理使用缓存情况有哪些?

频繁修改的数据:缓存很快会失效,徒增系统负担
没有热点的访问:不遵循二八定律,所有数据访问频度基本相同的情况,使用缓存基本没意义
数据不一致与脏读:缓存会设置失效时间,超时后会重新加载,也会造成短时间内数据不一致问题,如修改了数据,实时同步缓存,又会造成系统开销较大问题,需要权衡
缓存穿透:不恰当业务或攻击,持续请求不存在数据,缓存中没有该数据,所有请求全部落到数据库服务器上,造成雪崩,可将不存在数据也缓存起来,设为null来解决此问题;

 

6、分布式缓存—Memcached,分布式内存对象缓存系统,K/V存储,具体流程是什么?

1. 检查客户端请求的数据是否在Memchahe中存在,如存在,直接将数据返回;
2. 如果请求数据不在Memcache中,去查询数据库,把从数据库中获取的数据返回给客户端,同时把数据缓存到Memcache;
3. 每次更新数据库,同时更新Memcache中的数据,保证数据一致性;
4. 当分配空间使用完毕后,使用LRU策略替换数据;

 

7、应用服务器性能优化主要方法?

1. 分布式缓存:分布式缓存—Memcached,分布式内存对象缓存系统,K/V存储
2. 异步操作:可使用消息队列将请求调用异步化,发送的请求发送给消息队列后立即返回,再由消息队列的消费者进程从消息队列中获取数据,异步写入数据库;
3. 使用集群:在高并发下,可使用负载均衡技术构建应用服务器集群,将请求分发到多台应用服务器来处理,降低单台服务器压力,提升响应速度;
4. 代码优化:多线程,资源复用,数据结构,垃圾回收

 

 

8、存储服务器性能优化方法?

适当使用SSD;
合理使用RAID(RAID0,RAID1,RAID10,RAID5,RAID6等)
合理使用HDFS等分布式文件系统


在很多情况下,磁盘的访问速度成为整个系统的瓶颈,而且磁盘中的数据是网站最重要的资产,故磁盘的容错性和可用性都至关重要;

9、代码优化有哪些具体的方法?

多线程:多线程优势是充分利用CPU资源,加速请求处理速度;
资源复用:尽量减少开销很大的系统资源的创建和销毁,如数据库连接,网络通信连接,线程、复杂对象等;
数据结构:好的数据结构和算法的使用是程序性能保障的核心
垃圾回收:尽量了解所使用语言的垃圾回收算法,了解其本质后,在设计程序时能避免一些不良的设计,有助于程序优化和参数调优,编写内存安全的代码

 

关注点说明优化
多线程

多线程优势是充分利用CPU资源,加速请求处理速度;

对于Web应用,用户请求的多线程通常被Web服务器容器管理; 最需注意的问题:多线程安全

最佳线程数: [任务执行时间/(任务执行时间 - IO等待时间)] * CPU核数;

多线程对资源修改必须加锁

资源复用尽量减少开销很大的系统资源的创建和销毁,如数据库连接,网络通信连接,线程、复杂对象等;

资源复用主要使用:

1. 单例(如Spring中默认构造的对象都是单例)

2. 对象池(如各种连接池,线程池,因为连接、线程都是对象,其实各种池都是对象池)

数据结构好的数据结构和算法的使用是程序性能保障的核心——
垃圾回收尽量了解所使用语言的垃圾回收算法,了解其本质后,在设计程序时能避免一些不良的设计,有助于程序优化和参数调优,编写内存安全的代码比较流行的垃圾回收算法主要由引用计数、标记清除以及分代回收等

 

 

 

 

 

 

 

 

 

 

二、网站架构之性能优化

参考:网站架构之性能优化
https://www.cnblogs.com/pflee/p/4508232.html

网站架构中最核心的几个要素包括:性能可用性伸缩性扩展性安全性,而性能又是其中最为重要的,本篇简要说下网站性能优化方面所需做的一些事情;

1. 网站性能问题概要

性能问题说明
产生原因大都是在用户高并发访问时产生的
主要工作改善高并发用户访问情况下的网站访问速度
主要目的改善用户体验,让用户觉得网站很快,一切的产品都必须站在用户的角度考虑问题

 

 

 

 

2. 网站性能测试

站在不同的视角,所关注的网站性能是不一致的:

视角关注点说明
用户视角用户打开浏览器网页的响应速度,网页能再多长时间内打开,一般超过3秒就会感觉比较慢了用户感受到的时间主要包括网络通信、服务器处理、浏览器解析时间
开发视角主要关注应用程序本身及其子系统的性能例如应用程序本身各业务耗时、并发量、程序是否稳定等
运维视角更关注基础设施性能和资源利用率如运营商带宽能力,服务器硬件配置,网络、服务器资源利用率等

 

 

 

 

 

站在开发、测试人员角度,性能测试的主要指标:响应时间并发数吞吐量服务器各性能指标

性能指标说明测试方法
响应时间从发出请求开始到收到最后响应数据所花费的时间一般计算多次重复请求所花费的总响应时间,再除以请求次数
并发数系统能够同时处理请求的数目,也代表了同时发起请求的用户数多线程模拟并发用户
吞吐量单位时间内系统处理的请求数量,体现出系统的整体处理能力,一般常使用TPS(每秒事务数)、HPS(每秒处理HTTP请求数)、QPS(每秒处理查询数)不断增加并发数量,查看响应时间的变化曲线
服务器各性能指标包括系统负载、内存使用、磁盘使用、CPU使用、网络I/O等设定阈值,超过阈值报警

 

 

 

 

 

资源消耗与TPS性能曲线图:

并发用户访问响应时间曲线图:

 

3. 性能优化

根据性能测试,定位产生性能问题的具体原因,找到瓶颈点,逐步优化;

一般性能优化分为Web前端性能优化、应用服务器性能优化、存储服务器性能优化;

Web前端性能优化

1. 浏览器访问优化

优化方法造成性能问题的原因主要手段
减少http请求HTTP无状态,每次请求服务端都需要启动独立线程去处理,开销较大合并CSS、JS文件,合并图片(可通过CSS偏移来解决显示问题)
使用浏览器缓存静态资源更新频度低,不宜每次都重新获取设置HTTP头信息中的Cache-Control和Expires属性,可设定浏览器缓存
压缩静态资源中一些无用的空格,回车等占据了大量字节,造成每次网络传输浪费不必要的流量可使用GZip对CSS、JS等文件进行压缩
CSS与JS位置浏览器是下载完全部CSS后才会对页面进行渲染,加载JS后则立即执行一般将CSS放在页面最上面,JS放在页面底部
减少Cookie传输Cookie会包含在每次的请求和响应中,太大的Cookie会影响数据传输尽量减少Cookie中传输的信息量,静态资源使用独立的域名访问,关闭Cookie

 

 

 

 

 

 

 

 

 

 

2. CDN加速

上面说了,CDN的本质仍然是缓存,将数据缓存在离用户最近的机房,提升访问速度,降低中心机房服务器的压力;
CDN能够缓存的一般都是静态资源,如图片,文件,视频,CSS,JS等,将访问频度高的静态资源放到CDN中;

 

3. 反向代理

反向代理作用说明
保护网站安全所有请求到达的第一层都是反向代理服务器,隔离了用户和网站服务器
缓存将静态资源缓存在反向代理服务器,减轻Web服务器压力,提升访问速度
负载均衡应用服务器有多台的话,使用反向代理做负载均衡是不错的选择,如Nginx

 

 

 

 

 

 

 

应用服务器性能优化

1. 分布式缓存

网站性能优化第一定律优先考虑使用缓存优化性能

缓存的本质是内存Hash表,数据以Key/Value的形式存储在Hash表中,时间复杂度O(1),Hash表存储如下图所示:

只要是缓存,就会涉及到缓存未命中与缓存失效问题,因此,缓存中的数据一般都是读取比例很高,很少变化的数据;
不合理的使用缓存意义不大,还可能降低网站性能,不合理使用缓存可能造成的影响如下表所示:

不合理使用缓存情况原因
频繁修改的数据缓存很快会失效,徒增系统负担
没有热点的访问不遵循二八定律,所有数据访问频度基本相同的情况,使用缓存基本没意义
数据不一致与脏读缓存会设置失效时间,超时后会重新加载,也会造成短时间内数据不一致问题,如修改了数据,实时同步缓存,又会造成系统开销较大问题,需要权衡
缓存可用性当缓存大面积失效时或缓存服务崩溃时,会对后端数据库造成突发性的高并发访问,瞬间压力过大,可能导致数据库服务器宕掉,造成雪崩; 可通过分布式缓存服务器集群来提高缓存的可用性;
缓存穿透不恰当业务或攻击,持续请求不存在数据,缓存中没有该数据,所有请求全部落到数据库服务器上,造成雪崩,可将不存在数据也缓存起来,设为null来解决此问题;

 

 

 

 

 

 

 

 

 

分布式缓存—Memcached,分布式内存对象缓存系统,K/V存储,具体流程:

1. 检查客户端请求的数据是否在Memchahe中存在,如存在,直接将数据返回;
2. 如果请求数据不在Memcache中,去查询数据库,把从数据库中获取的数据返回给客户端,同时把数据缓存到Memcache;
3. 每次更新数据库,同时更新Memcache中的数据,保证数据一致性;
4. 当分配空间使用完毕后,使用LRU策略替换数据;

  Memcached的分布式算法——一致性哈希,不再展开讨论,比较简单;

Memcached服务端通信模块基于Libevent(支持事件触发的网络通信程序库),服务器集群之间互不通信,能做到线性伸缩;

 

 

2. 异步操作

可使用消息队列将请求调用异步化,发送的请求发送给消息队列后立即返回,再由消息队列的消费者进程从消息队列中获取数据,异步写入数据库;
在高并发情况下,使用消息队列,能够有效降低数据库服务器压力,降低用户端响应延时;
消息队列可以消除高并发下的访问高峰,消峰效果如下图所示:

3. 使用集群

在高并发下,可使用负载均衡技术构建应用服务器集群,将请求分发到多台应用服务器来处理,降低单台服务器压力,提升响应速度;

4. 代码优化

关注点说明优化
多线程

多线程优势是充分利用CPU资源,加速请求处理速度;

对于Web应用,用户请求的多线程通常被Web服务器容器管理; 最需注意的问题:多线程安全

最佳线程数: [任务执行时间/(任务执行时间 - IO等待时间)] * CPU核数;

多线程对资源修改必须加锁

资源复用尽量减少开销很大的系统资源的创建和销毁,如数据库连接,网络通信连接,线程、复杂对象等;

资源复用主要使用:

1. 单例(如Spring中默认构造的对象都是单例)

2. 对象池(如各种连接池,线程池,因为连接、线程都是对象,其实各种池都是对象池)

数据结构好的数据结构和算法的使用是程序性能保障的核心——
垃圾回收尽量了解所使用语言的垃圾回收算法,了解其本质后,在设计程序时能避免一些不良的设计,有助于程序优化和参数调优,编写内存安全的代码比较流行的垃圾回收算法主要由引用计数、标记清除以及分代回收等

 

 

 

 

 

 

 

 

 

存储服务器性能优化

在很多情况下,磁盘的访问速度成为整个系统的瓶颈,而且磁盘中的数据是网站最重要的资产,故磁盘的容错性和可用性都至关重要;

  • 适当使用SSD;
  • 合理使用RAID(RAID0,RAID1,RAID10,RAID5,RAID6等)
  • 合理使用HDFS等分布式文件系统

转载于:https://www.cnblogs.com/Renyi-Fan/p/10907500.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_770528.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习MVC之租房网站(五)-权限、角色、用户管理

在上一篇<学习MVC之租房网站&#xff08;四&#xff09;-实现Service层并进行单元测试>中&#xff0c;记录了实现Service层并进行单元测试的过程&#xff0c;接下来该到“正题”-MVC了&#xff0c;也就是UI层的开发。 网站分为前台、后台两部分&#xff0c;因为后台涉及到…

从零开始用 Flask 搭建一个网站(一)

转自&#xff1a;https://blog.csdn.net/jpush/article/details/69946646 前言 笔者之前未接触过 Python&#xff0c;只是略懂一点前端&#xff0c;所以说从零开始也相差无几吧。Flask 是一个轻量级的基于 Python 的框架&#xff0c;但是扩展性非常良好&#xff08;Github 上 2…

从零开始创建属于自己的网站(转)

准备域名 如果已经有域名的用户可以跳过这一步&#xff0c;如果没有的话可以在万网购买&#xff0c;.com等国际域名大约在39元/年&#xff0c;部分国内域名仅需要9元。准备服务器 如果已经有服务的用户也可以跳过这一步&#xff0c;如果没有的话可以选择购买阿里云的服务器。如…

如何发布网站

1. 购买域名 2. 登录阿里云&#xff0c;到阿里云的控制台&#xff0c;域名与网站 --域名中解析 二。填写内容&#xff0c;注意记录值使用外网的ip地址 三&#xff0c;配置iis&#xff0c;一个端口可以配置多个域名 转载于:https://www.cnblogs.com/haigui-zx/p/9081826.html

网站优化:浏览器缓存控制简介及配置策略

说在开头 《高性能建站指南》看了很多遍&#xff0c;一直没有搞清楚缓存这一块。。什么expired,last-modified,eTag等等&#xff0c;自己只是知道&#xff0c;并没有深入了解&#xff0c;在http请求中&#xff0c;这些字段是如何判断是否需要从服务端重新拿文件还是利用缓存。看…

最有利于网站优化的关键词选择技巧

服务器监控维护工具 网站关键词选择的好与坏直接关系着SEO优化的最终结果。个人认为关键词的选择是整个优化项目中最重要也是最关键的一步&#xff0c;如果你从这一步就开始跑偏&#xff0c;那么后期你的内部和外部优化做的再好再完美也都只是在浪费时间而已&#xff0c;所以咱…

国外程序员经常用的二十八个学习网站

无论你是想转行&#xff0c;成为一名全职程序员&#xff0c;或者想尝试打造一个网站或应用程序&#xff0c;或者只是希望提高了你的技能&#xff0c;学习代码无疑是每个程序员都绕不开的一关。尽管作为一个程序员可能不适合每一个人&#xff0c;但是还是有很多网站适合来提高自…

python使用flask和bootstrap制作网站

前言 在讲之前先讲一个别的&#xff0c;今天刚上csdn的时候竟然发现在排名那里不是千里之外了&#xff0c;这么一个历史性的时刻应该记录一下。 现在正好是20000&#xff0c;&#xff2f;&#xff08;∩&#xff3f;∩&#xff09;&#xff2f;哈哈&#xff5e; 下面开始讲正…

.NET 发布网站步骤

本文章分为三个部分: web网站发布、IIS6 安装方法、ASP.NET v4.0 安装方法 一、web网站发布 1.打开 Visual Studio 2013 编译环境 2.在其解决方案上右击弹出重新生成解决方案,以查看是否有错误 3.如果项目没有错误右击WebUI层发布 4.这样将会看到以下界面 5.在配置文件中新建配…

php企业建站源码

php企业建站源码 1 <?php2 session_start();3 include "./admin/config.php";4 include "./right/sql.php";5 ?>6 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-t…

《SEO的艺术(原书第2版)》——2.6 垂直搜索引擎

2.6 垂直搜索引擎 垂直搜索&#xff08;Vertical Search&#xff09;这一术语有时候被人们用来表示以有限的数据集为中心的专用或者特殊的搜索引擎。主流搜索引擎提供的垂直搜索解决方案包括图片、视频、新闻和博客等方面的搜索。这些功能都是这些供应商的标准服务&#xff0c;…

电商总结(八)如何打造一个小而精的电商网站架构

前面写过一些电商网站相关的文章&#xff0c;这几天有时间&#xff0c;就把之前写得网站架构相关的文章&#xff0c;总结整理一下。把以前的一些内容就连贯起来&#xff0c;这样也能系统的知道&#xff0c;一个最小的电商平台是怎么一步步搭建起来的。对以前的文章感兴趣的朋友…

IIs网站管理配置

1.首先打开自己的控制面板--程序和功能&#xff0c;然后点击‘打开或关闭windows功能’ 2.选择如上图所示的界面&#xff0c;点击确定 在配置成功IIs网站管理服务之后&#xff0c;就进入关键性的时刻 3.右键点击计算机选择‘管理’--“Internet”信息服务管理器 进入iis界面…

常用的软件、网站

前言 整理一下可能常常会使用的软件和服务平台&#xff0c;顺序不分先后 1.编辑类软件 MacDown&#xff1a;要写简历了&#xff0c;要用了&#xff0c;哈哈&#xff0c;平时上传到github的内容也可以现在MacDown上写好&#xff0c;再粘贴到github上传印象笔记&#xff1a;平时记…

随时查看源码的网站---http://www.sooset.com/

由于工作需要经常要在Windows平台下参阅linux源码&#xff0c;以前都用http://lxr.linux.no/来浏览源码&#xff08;如下图所示&#xff09;,最近发现sooset来浏览更方便&#xff0c;所以介绍给大家分享。导航栏用起来很方便&#xff0c;不是吗&#xff1f;呵呵更多详情请参考&…

抢券爬虫软件有哪些_亿联时代网络讲解影响爬虫访问网站的因素有哪些

关于今天这个知识点&#xff0c;要想搞明白影响爬虫访问网站的因素&#xff0c;首先我们要知道爬虫抓网站的方式和收录原理是什么。深圳网站优化经过大量的实验及互联网经验得出蜘蛛爬虫的抓取方式一般是&#xff1a;抓取-漫游式(多线式)-下载内容、提取链接。亿联时代网络讲解…

【从0開始Tornado建站】发表文章和评论

先上个效果图&#xff1a; 这是每一个用户的主页。由于是基本功能。所以用户头像。爱好等信息都还没有&#xff0c;在下一阶段加上。右側“发表新文章”按钮点击后进入发表文章的页面&#xff1a; 之前尝试过一些开源的富文本编辑器widgEditor和百度的ueditor&#xff0c;总感觉…

python设计网站

系统概要说明 现在&#xff0c;随着物联网以及网络技术的飞速发展&#xff0c;互联网已经成为了人们发布与获取信息的重要途径之一&#xff0c;所以通过老师要求&#xff0c;我们设计了一个普通的公司管理信息系统网站。这网站的具有的功能有注册&#xff0c;登录&#xff0c;注…

html背景图片加载慢,javascript – 如何加快我网站的背景图片加载速度?

我正在努力提高website的性能.在Chrome DevTools中,我看到bg2.jpg的请求在开始下载时被延迟了.我认为这种情况正在发生,因为我使用JavaScript生成URL并将其设置为CSS中的背景图像,Chrome浏览器正在优先处理包含此代码的脚本标记.let bgImgName "bg" Math.floor(Mat…

《大型网站技术架构》读书笔记四:瞬时响应之网站的高性能架构

此篇已收录至《大型网站技术架构》读书笔记系列目录贴&#xff0c;点击访问该目录可获取更多内容。 一、网站性能测试 &#xff08;1&#xff09;性能测试指标&#xff1a;①响应时间&#xff1b;②并发数&#xff1b;③吞吐量&#xff1b;④性能计数器&#xff1b; &#xff0…