开发网站性能分析及优化

news/2024/5/21 16:29:01/文章来源:https://blog.csdn.net/weixin_34212189/article/details/92080899

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

从程序角度分析网站,都是个人拙见,记录看看。

1、网站打开体验,速度慢的优化方案:
  @ 优化方案
    前端架构优化;调整浏览器缓存、并发、异步特性;使用CDN服务;反向代理等;等。
  @ 后端方案
    缓存数据加速数据获取;使用集群改善请求吞吐量;请求使用异步消息队列加快相应;代码优化;等。
  @ 运维方案 
    网络运营商的带宽能力及稳定性;服务器硬件的配置;数据中心的网络架构;虚拟化技术优化资源利用;等。

2、网站的性能分析要从这几个点分析:
  @ 响应时间
    执行一个操作的时间,包括从发出请求开始到收到最后响应数据所需要的时间。
  @ 并发数
    指系统能够同时处理请求的数目,即网站的并发用户数,指同时提交请求的用户数目。
  @ 吞吐量
    指单位时间内系统处理完的请求数量,体现系统的整体处理能力。
  @ 性能计数器
    描述服务器或操作系统性能的数据指标。包括对象与线程数、内存使用、CPU使用、磁盘与网络I/O等指标。
  实际开发中,可依据以上几个点的测试结果针对性的对网站进行优化方案。

3、Web前端性能优化
  @ 浏览器访问优化方案
    * 减少HTTP请求:合并CSS,合并图片,合并JavaScript 等手段减少浏览器对网站的请求次数。
    * 使用浏览器缓存:对于静态文件资源,更新率比较低的资源可以缓存到浏览器中,用来减少请求次数。
    * 使用压缩:服务器端对文件进行压缩,浏览器端对文件解压缩,以此减少通信传输的数据量。
               对HTML、CSS、JavaScript文件启用GZip压缩可以达到很好的效果。
    * CSS放页面最上面,JavaScript放在页面最下面:依据两种文件执行的时间原理分析即可。
    * 尽量减少cookie的传输,太大的cookie会严重影响数据传输。
  @ CDN方案
    * 内容分发网络:CDN能够缓存的一般是静态资源,如图片、文件、CSS、JavaScript脚本、静态网页等,而且这些文件访问频率很高,
                  将其缓存在CDN可极大改善网站的打开速度。
  @ 反向代理
    * 代理服务器:合理有效的分配资源到相应的服务器,实现负载均衡的效果。
      此外反向代理服务器也可以将静态资源缓存起来,当请求网站时,第一时间将资源返回相应客户端。

4、应用服务器性能优化
   网站的业务代码都部署在这里,也是网站变化最多的,开发最复杂的地方。
  @ 分布式缓存
    * 网站性能优化第一定律:优先使用缓存优化性能 
      缓存主要用来存放那些读写比很高、很少变化的数据,读数据优先在缓存中获取,失效的状态再去访问数据库。
      依据二八定律,即80%的访问落在20%的数据上,即可将这20%的数据缓存起来,以此改善数据访问的响应时间。
    * 合理使用缓存需要考虑的问题
      不要频繁修改数据;
      对于不遵循二八定律的数据没有必要使用;
      对数据不一致的问题预设解决方案;
    * 防范缓存穿透
      将不存在的值也缓存起来,将其值设置NULL,防止恶意访问数据库为目的的操作;
    * 分布式缓存架构
      这里不细讲大家应该也知道原理,简单介绍三种。 
        # JBoss Cache:需要更新同步,代价大,多用于企业,中等数据量;
        # Memcached(互不通信)、Redis(互不通信),Redis是我自己加上的感觉也是可以这样使用的,多台架构时,缓存的逻辑可添加到应用程序中,
          记录对应一个算法结果将数据存放到不同的缓存服务器中,取得时候经算法后去对应的缓存中获取结果;
          
  @ 集群
    多台服务器分布,配合负载均衡使用。
    
  @ 异步
    使用消息队列,将调用异步化,进而改善性能。
    注意:异步化之后,要针对业务流程进行分析,不需要异步的业务需要进行应对方案,以防产生不好的体验或纠纷问题。
  
  @ 代码优化
    合理的优化业务代码,可以很好的改善网站的性能
    这里相对要注意的几个问题:
    * 多线程 
      多线程并发对某个资源修改操作,会导致数据错乱。
    * 资源复用
      尽量减少开销大的资源创建/销毁,比如数据库连接、线程、复杂对象等。
      可以适当使用单例模式和对象池。
    * 合理的使用数据结构 改善数据读写和计算特性 进而优化程序的性能。
    * 垃圾回收机制

5、存储服务器性能优化
  @ 固态硬盘 > 机械硬盘
  @ 存储服务 在数据方面的优化,详细可查看数据库优化方面的文章。


在以上的优化方案中,涉及集群方面的方案,分布式可以改善网站并发特性,但是也会带来通信延迟的问题,设计架构的同时心里有数,合理调整该方案的预期。
 

转载于:https://my.oschina.net/u/1168056/blog/1787459

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

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

相关文章

大学三年,我靠每天在这些网站学习,进入了梦寐以求的大厂

国内 1.慕课网(https://www.imooc.com/) 慕课网的资源还是比较丰富的,而且免费的不少,初次踏进编程这坑就是从他开始。里面还有很多大佬的录制,如Android大佬郭霖。 2.极客学院(https://www.jikexueyuan.com/) 极客学院收费的居多&#xff…

这个神奇的网站,竟让我学会了所有数据结构

在无意中发现了一个神奇的数据结构演示网站。他以动画的形式演示数据的存储、查找、删除过程,相信配合上动画,各种数据结构也会轻松拿下。 https://www.cs.usfca.edu/~galles/visualization/Algorithms.html 一、栈 二、各种排序 三、红黑树 四、队列

关于基于MVC网站架构的思考

关于MVC的定义 比较完整的参考:https://www.wikidata.org/wiki/Q44860 MVC是一种设计模式Software Design Pattern,不管在桌面应用亦或是网站程序中,都是比较常用流行的一种架构设计。M代表Model,V代表View,C代表Con…

关于使用PHP网站作采集用途的看法(其一)

记得几年前,“我”还是有点洞察力的“萌新”,曾有人建议“我”为网站修改“自动采集”功能。这的确是一个很好的想法,不需要额外的编程语言和IDE工具,自动增加网站内容的同时,还能为网站编辑减轻不少负担并提高编辑的创…

Python + Selenium:自动翻页爬取某图片网站指定图集

简单来说,爬取工作前期任务是了解目标网站的体系结构和“反爬策略”,然后是根据现有软硬件资源环境条件设计代码,反复迭代测试,最终实施部署。 之前,写过爬取图片网站的PHP和Python代码spi之类,通过读取HT…

Python + Selenium: 爬取某社交门户网站新闻栏目焦点

以前通过直接获取的HTML文本内容分析过,但是明显毫无结果。彼时深切体会到要想测试爬取“普通”反爬虫策略级别以上的网站内容,必须从浏览器内核级别入手。因为只有彻底模拟浏览器的行为,才无法被机器人100%识别为爬虫而遭到限制或拒绝服务。…

多层次应对HTTPS网站超时:selenium.common.exceptions.TimeoutException

现在网络越来越普及,带宽速度普遍也有较大提升。伴随网络的普及,同时快速增长的还有网民的数量和网络流量。网站超时响应的“通病”,仍然是无法完全避免的。尤其是在网络流量高峰期访问HTTPS网站,使用类似Selenium的浏览器内核驱动…

阿里云轻量服务器部署PHP网站(基于Lamp)

一:首先登陆阿里云账户购买轻量服务器(这里就不详细介绍啦)【轻量服务器会提供PHP,Apache,Mysql,不需要我们自己安装,方便很多】 如果是选择阿里云ecs服务器的话可以参考:https://blog.csdn.net/qiaosym/article/deta…

[转载]使用IntelliJ IDEA开发SpringMVC网站(一)开发环境

访问GitHub下载最新源码:https://github.com/gaussic/Sp... 文章已针对IDEA 2016做了一定的更新,部分更新较为重要,请重新阅读文章并下载最新源码。另外:文中的附图部分仍然为旧版本,请参照自身版本进行配置。 前言 由…

ASP.NET 2.0中轻松实现网站换肤

: 查看个人网站 查看详细资料 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"http://www.w3.org/1999/xh…

JQuery 的跨域方法 可跨任意网站

因发现有不少博友发园内短信问及JS的跨域问题,我想很多程序员的脑海里面还认为JS是不能跨域的,其实这是一个错误的观点;有很多人在网上找其解决方法,教其用IFRAME去解决的文章很多,真有那么复杂吗?其实很简…

推荐一个可以往blog里面加入旅行线路图的travel map网站

今天无意中发现这个网站,Free Travel Map Widget,可以很方便的做一个travel map,然后生成html代码放到blog里面。效果可以看看我之前的泰国和欧洲的blog更新,加了map。转载于:https://www.cnblogs.com/fresky/archive/2010/11/03/…

高性能网站建设之减少Http连接数

关于CSS背景图合并工具,请大家参看随笔:Css背景图合并工具功能增强(V0.1) 在对大访问量网站进行性能优化时,其中有一点是尽量减少http连接数,道理很明了,减少了单个PV的http连接数,…

通过脚本方式导出SharePoint网站集用户及其角色列表

这是课堂上的一个例子,分享出来给大家参考用。如果你管理一个或者多个网站集,那么这个脚本将有助于你快速地了解用户信息。 管理员们,懂点脚本还是很有用的哦,呵呵 将下面的脚本保存为一个ps1文件function Get-UsersWebPermission…

php与mysql网站开发..._Mysql 与 php动态网站开发 入门教程,mysql网站开发_PHP教程...

Mysql 与 php动态网站开发 入门教程,mysql网站开发这个系列的教程由表单开始写,因为表单可以把数据库和web 之间的交互表现得很明显。提交表单 ,数据库记录注册信息。本教程属于基础教程。大神请略过。对于php和mysql之间的稳固性很受程序员的…

linode服务器登录网站,linode 服务器

linode 服务器 内容精选换一换云服务器组是对云服务器的一种逻辑划分,云服务器组中的弹性云服务器遵从同一策略。当前仅支持反亲和性,即同一云服务器组中的弹性云服务器分散地创建在不同的主机上,提高业务的可靠性。您可以使用云服务器组将业…

黑人抬棺html网站源码

黑人抬棺html源码 成品地址:https://www.52fenxiang.top/hrtg/ 源码下载地址:https://www.52fenxiang.top/thread-448-1-1.html

用DIV+CSS的网页布局对SEO的好处

为什么80%的码农都做不了架构师?>>> DIVCSS是网站标准(或称“WEB标准”)中常用术语之一,通常为了说明与HTML网页设计语言中的表格(table)定位方式的区别,因为XHTML网站设计标准中&a…

最新70佳单页网站设计案例欣赏(下篇)

单页网站是指只有一个页面的网站,这种形式的网站曾经非常流行,现在依然有很多人喜欢。不过,并不是每个网站都适合做成单页,一般都是内容比较少而且将来内容也不怎么增加的情况才适合这样做。如果你打算做一个这样的网站&#xff0…

在线压缩图片网站源码

今天分享给小伙伴一份在线压缩图片的网站源码,也算是比较实用的一份源码,测试地址我会贴在【效果展示】段落下面,喜欢的小伙伴自行下载吧。 #效果展示 效果展示:图片在线压缩效果展示 来自:12580code源码站