首页 > 其他分享 >自主阅读笔记03《基于web 服务器的网站性能优化研究》

自主阅读笔记03《基于web 服务器的网站性能优化研究》

时间:2023-04-14 14:57:01浏览次数:33  
标签:03 负载 缓存 请求 web 数据库 服务器 加载

文章来源信息记录材料by戴胜,朱琳、广东科技学院计算机系

一、客户端优化

实际指的是浏览器,在浏览器完成访问网站的时间中,有80%的时间用于加载图像、样式表、脚本等静态资源。浏览器的主要作用就是显示数据和发送http请求。

1.减少HTTP请求

一个页面中包含多个种类和多个数量的组件,减少Http请求次数就是减少对这些组件的加载请求。减少HTTP请求次数常用以下方法:
(1)延迟加载和预加载
延迟加载指的是页面刚开始加载时只加载一部分,当用户继续往后进行浏览时,才会加载后面的资源,这样可能会减少请求数量或延迟请求数量,有利于提高用户体验。预加载指的是在网页全部加载之前,对一些重要内容提前进行加载,减少加载时等待的时间。延迟加载可以使用定时器、条件触发等方法来实现。

(2) Ajax 请求优化
Ajax的优点是由于其从服务器传输信息的异步性而为用户带来反馈的及时性,但随着网页A jax应用的增加,请求数量也不断增加,这样也会降低网站性能2。对Ajax进行优化,可以使用Ajax 缓存。对Ajax请求进行缓存,将请求地址和返回结果保存在缓存中,当进行下一次A jax请求时,直接从缓存中提取数据,从而减少系统的响应时间。
2. JSP静态化
JSP技术主要用于动态网页,但每次的结果没有保存,导致每次请求都需要进行编译等多次复杂的操作,这样使得系统开销巨大。在访问JSP网页时,服务器会先把JSP转换成Servlet对象,然后对Servlet进行处理,最终将结果以HTML文件格式返回给浏览器。JSP静态化实际上就是在Servlet处理之后到HTML页面响应之前这一过程中,设置一个拦截器,将Servlet生成的HTML文件进行保存,当下一次访问时,可以直接加载HTML文件,从而减少系统操作时间。

二、服务器端优化

当请求到达服务器后,服务器根据请求内容进行业务逻辑处理,或调用方法,或访问数据库,或连接外部网站,根据服务器业务处理中涉及到的两个重要部分web服务器访问和数据库访问,提出以下优化方案。
1.提高后台服务器性能
   (1)负载均衡
  负载均衡指的是对系统中的各个节点的负载进行监控调整,使每个节点的负载趋于均衡。具体是指在系统节点中部署硬件负载均衡设备或安装负载均衡软件,对各个节点进行监控,并建立一套映射机制,可以将请求分发到其他节点,从而使过载节点减少负担,实现负载均衡。常见的负载均衡技术包含:NDS轮询、IP负载均衡和CDN.
DNS轮询就是将同一个域名对应多个IP地址,一般采用轮询算法进行调度,但实际上由于调度策略的问题,DNS轮询很难实现真正的均衡;IP均衡负载是通过内核驱动更改IP的目的地址来完成数据负载均衡的,请求先到达负载均衡服务器,之后将IР进行映射,并把请求内容发送到新的IP地址对应的服务器上;CDN是利用各种缓存服务器部署到用户访问集中的网络中,利用全局负载技术将用户的访问指向距离最近的工作正常的缓存服务器上,由缓存服务器直接响应用户请求3。负载均衡在用户访问量比较大的情况下使用,才能保证成本和服务器性能。
(2)多线程并发
多线程并发指的是使用多个线程其处理多个任务。一个请求会产生一个Servlet,一个Servlet需要一个线程

来处理,使用多线程技术可以同时处理多个请求和任务,这样可以节省时间,提高访问性能。多线程并发常采用线程池技术。线程池会预先生成多个线程,当有任务到达就会从中取出一个线程进行处理,而之前的线程在完成任务后会回到线程池,准备下一次被调用。线程池技术能够减少创建线程带来的时间开销,有利于提升系统性能。
2.数据库优化
数据库的访问效率是网站性能的重要体现。在数据库访问优化中,要把握减少数据访问、返回更少数据、减少交互次数、减少系统开销等原则。
(1)建立适当的索引
对适当的字段建立索引,从而提升数据库访问效率。索引的种类有很多,组合索引、多重索引等等,通过这些索引的整合使用将大大提高数据库的访问效率。
(2)减少数据量
减少返回的数据量,可以减少服务器和数据库两者数据传输的时间,这将有利于减少web 服务器响应数据的时间。常常是进行数据分页处理,减少每次传输数据,并且只对需要的数据进行返回
(3)使用数据库连接池
数据库连接池在系统初始化过程中会创建多个数据库连接,当有数据库访问请求到达时,不需要再进行数据库驱动加载、连接等步骤,而是直接从数据库连接池进行调用,这样减少数据库的访问时间,提高效率4。
3.缓存技术
缓存技术就是将访问过的内容进行记录保存,在下次访问时可以直接从记录中调用数据,从而提高访问速度。缓存技术分为操作系统磁盘缓存,数据库缓存,应用程序缓存,web 服务器缓存,客户端浏览器缓存5。缓存技术可以使用在网站访问的各个环节,根据网站的服务对象和服务要求设置特定的方案,才能使缓存效果最好。

 

标签:03,负载,缓存,请求,web,数据库,服务器,加载
From: https://www.cnblogs.com/cyk612/p/17318276.html

相关文章

  • springboot-web-mybatis
    Restful开发规范Restful是网络应用接口程序的接口设计风格,基于HTTP协议GET:查询POST:新增PUT:修改DELETE:删除Restful是一种风格,可以不遵守如何为请求参数设置默认值可以在Service层判断是否为null,如果为true则给它赋值默认值可以在Controller层参数列表添加@RequstPa......
  • ROS学习笔记(三)- 参数服务器
    以下是GPT对此的介绍:ROS的参数服务器是一种全局的、名称空间分层的键值存储系统,用于在ROS系统中存储和共享参数数据。它允许ROS节点在运行时获取和设置参数,而不需要在代码中硬编码参数。参数服务器提供了许多优点,例如:可以在ROS系统中共享参数数据,使得多个节点可以访问同一组参......
  • JSP上传大型视频文件到服务器,解决方案
    ​ 我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用。首先我们需要了解的是上传文件三要素:1.表单提交方式:post(get方式提交有大小限制,post没有)2.表单的enctype属性:必须设置为multipart/form-data.3.表单必须......
  • WebRTC学习记录以及以Janus-gateway流程增进理解
    这篇文章是我按照我的学习习惯记录的文章,借鉴了许多大佬的学习框架,以及独自去验证正确性的一个过程Web实时通信(Real-TimeCommunication)概述https://webrtcforthecurious.com/zh/docs/01-what-why-and-how/看完只有一个感受:为什么音视频要扯上web,其中的协议大部分都来自web的......
  • WGCLOUD和 Prometheus 两款服务器运维监测软件比较选型
    最近也在想这个问题,我本身是java开发,WGCLOUD设计思想是人人皆运维,极大降低运维工作的学习门槛和学习成本,以下列几点比较下1..wgcloud对使用人员没什么要求,你可以是研发、测试、DBA、运维等,只要你能连接服务器会基础操作命令即可,它不要求你会专业的运维知识。Prometheus相对学习难度......
  • Access denied for user 'root'@'x.x.x.x' (using password: YES)请求的ip跟报错显示
      这里请求的实际上报这一条错误是说明已经请求到了目标服务器的,mysql中以‘root’@‘x.x.x.x’这种格式表示的ip其实是我们当前的ip而非目标ip,这里报错是因为我密码输错了,所以报了错......
  • csharp上传大型视频文件到服务器,解决方案
    ​前言一、SpringMVC简介1.1、SpringMVC引言为了使Spring有可插入的MVC架构,SpringFrameWork在Spring基础上开发SpringMVC框架,从而在使用Spring进行WEB开发时可以选择使用Spring的SpringMVC框架作为web开发的控制器框架。 spring知识图谱分享:1.2、SpringMVC......
  • Oracle - 'yyyy-mm-dd' & 'yyyymmdd'
     oracle中日期格式'yyyy-mm-dd'和'yyyymmdd'的区别 对于年月日中"日"是个位的情况下,处理不一样,'yyyymmdd'格式没问题,而式'yyyy-mm-dd'格式则不行,请看: SQL>altersessionsetnls_date_format='yyyy-mm-ddhh24:mi:ss'; Sessionaltered. SQL>......
  • 【服务器数据恢复】HP-EVA存储多块硬盘离线导致LUN丢失的数据恢复思路和方案
    服务器数据恢复环境:HP-EVA存储环境:EVA某型号控制器+EVA扩展柜+FC硬盘。服务器故障:EVA存储中两块磁盘掉线导致存储中某些LUN丢失不可用。服务器数据恢复过程:1、首先对故障存储中所有磁盘做物理故障检测,经过检测没有发现有硬盘存在物理故障。使用坏道检测工具检测也没有发现坏道......
  • Go For Web:一篇文章带你用 Go 搭建一个最简单的 Web 服务、了解 Golang 运行 web 的原
    前言:本文作为解决如何通过Golang来编写Web应用这个问题的前瞻,对Golang中的Web基础部分进行一个简单的介绍。目前Go拥有成熟的Http处理包,所以我们去编写一个做任何事情的动态Web程序应该是很轻松的,接下来我们就去学习了解一些关于Web的相关基础,了解一些概念,以及......