作为项目经理的我,在近两个月内,时常被客户抱怨,我们的Web程序性能太差,经常宕机,即使服务器的配置再好,在业务请求量大的情况下也比较容易出现系统繁忙,线程堵塞,最后Web容器的HTTP线程池被慢慢耗尽而出现宕机问题,无法对外提供服务。

于是在多方压力下,与同事连续苦战,顶着压力,发现一些严重影响Web系统性能的问题:前台频繁与后台交互数据,且交互的数据约为500KB的数据,客户端与服务端来回传输的数据接近1M。

频繁的请求服务器,会造成页面响应缓慢,数据加载缓慢的问题,若果并发量大的时候,很容易造成系统瘫痪。

对于SSH项目而言,在很多情况下,大多数的服务都是提供查询数据信息服务和信息展现服务,涉及的数据修改服务则会相对少很多。而对于查询服务而言,若能减少前台客户端和后端服务器数据交互的次数,则对整个Web系统是很大的性能提升。

1、从网络方面而言,减少数据的交互就意味着减少了网络带宽的压力,能够提供更大并发量的服务,减少网络传输的时间。

2、由于减少了请求次数,服务器的资源开销得到有效减少,后台服务器不用频繁的创建线程来处理外部的请求,由于操作系统创建和销毁线程的操作是非常消耗系统CPU等资源,因此减少请求次数也就大大减少了系统开销。

解决优化办法:

在一次查询中,首次请求后台时,后台一次性将所需要的信息全部返回,前台进行缓存,后续所有的操作均解析前台缓存数据,从中取出页面操作所需要的信息然后再进行展现,有效减少请求后台服务器的次数。相对于程序和网络延迟来说,网络传输所耗费的时间,要比解析数据要慢的多,即使返回的数据量大,也不会比网络延迟的影响更大。

具体缓存的策略,可以是一个数组对象,一个列表对象,或一个HashMap对象等,也可以是JSON数据,或XML内容。总之,只要有利于缓存的数据结构,都可以用于数据的缓存。

此种方法,对比较大的数据来说,非常有效,能有效缓解服务器的压力和网络压力,提高系统的整体性能。

来源:http://blog.csdn.net/yangkang029/article/details/50186257

Web项目性能优化之减少HTTP请求次数优化相关推荐

  1. 高并发大流量专题---3、前端优化(减少HTTP请求次数)

    高并发大流量专题---3.前端优化(减少HTTP请求次数) 一.总结 一句话总结: 图片地图:使用<map><area></area></map>标签. ...

  2. web项目性能优化(整理)

    Web性能优化分为服务器端和浏览器端两个方面. 一.浏览器端,关于浏览器端优化,分很多个方面 1.压缩源码和图片 JavaScript文件源代码可以采用混淆压缩的方式,CSS文件源代码进行普通压缩,J ...

  3. web项目性能优化--网络、js、渲染

    2019独角兽企业重金招聘Python工程师标准>>> 网络相关 减少http请求数 因为每个完整的http请求都需要经过DNS寻址.与服务器建立连接.发送请求.等待响应.接收数据这 ...

  4. 前端性能优化--合并压缩js,减少http请求次数

    在我之前写的性能优化中,推荐大家使用雪碧图,压缩图片大小是一个方面,还有一个比较重要的方面就是,将图片放到一起了,降低了http的请求次数.今天这里我主要介绍大家在网站发布的时候,可以利用一些在线的合 ...

  5. 使用图片精灵优化前端 减少http请求

    所谓的图片精灵(CSS sprite)其实就是把几张图拼成一张图而已.它提供了一种把很多小图片拼成一张大一些的图片从而在低并发的浏览器上达到快速传输并呈现内容的目的. 大多数网站会做跨页面的图片精灵. ...

  6. 输入框实时搜索优化,减少请求次数、取消无用请求

    背景 用户在输入框输入内容的同时进行搜索,针对搜索实时搜索结果进行展示 问题 如果不做处理,只监听输入框的input事件或者键盘按下弹起事件,实时对文本内容进行搜索,往往因为网络波动问题可能会造成结果 ...

  7. Web前端性能优化,应该怎么做?

    本文将分享一些前端性能优化的常用手段,包括减少请求次数.减小资源大小.各种缓存.预处理和长连接机制,以及代码方面的性能优化等方面. base64:尤其是在移动端,小图标可以base64(webpack ...

  8. web前端性能意义、关注重点、测试方案、优化技巧

    1.前段性能的意义 对于访问一个网站,最花费时间的并不是后端应用程序处理以及数据库等消耗的时间,而是前端花费的时间(包括请求.网络传输.页面加载.渲染等).根据web优化的黄金法则: 80%的最终用户 ...

  9. 转:WEB前端性能优化规则

    14条规则摘自<High Performance Web Sites>,本文地址 1.减少Http请求 使用图片地图 使用CSS Sprites 合并JS和CSS文件 这个是由于浏览器对同 ...

最新文章

  1. 解决“安装程序无法定位现有系统分区,也无法创建新的系统分区”的方法
  2. Android系统的启动流程简要分析
  3. 软 件 学 院 实践环节报告
  4. [原创]利用Powerdesinger同步数据库的方法说明
  5. Facebook今年曾多次升级其安全和隐私控制
  6. Java Swing Mysql实现的Ktv点歌系统项目源码附带视频运行教
  7. 在redis上实现分布式锁
  8. Android实现计算器布局(线性布局)
  9. 通过网络启动计算机,实现通过局域网唤醒计算机的两种方法
  10. 今天修改包名时出现 java.lang.ClassNotFoundException: com.myandroid.qqlogin1.MainActivity错误
  11. Scrapy爬取起点中文网小说信息 绝对领域cosplay
  12. Error invoking sqlprovider method (tk.mybatis.mapper.provider.base.BaseselectProvider.dynamicSQL)解决
  13. 关于结婚照,还不如PS去~
  14. 【DIY】手把手教你爆改一台手机制作掌上游戏机
  15. jsp表单提交中文乱码的解决
  16. 计算机毕业设计JavaVue.js音乐播放器设计与实现(源码+系统+mysql数据库+lw文档)
  17. CorelDRAW x4提示非法软件产品被禁用解决方法教程
  18. 使用谷歌学术检索论文小技巧
  19. 计算机柜里 do dl代表什么,dl是什么意思(你知道AI、ML和DL分别代表什么吗?)...
  20. ASP.NET 海南热带瓜菜百科网信息管理系统的设计与实现-王翔-专题视频课程

热门文章

  1. python3 exe_Windows10下python3和python2同时安装 python2.exe、python3.exe和pip2、pip3设置
  2. 「Swift」笔记第一章:The Basic
  3. Tomcat原理详解和各种集群的实现(转自:http://harisxiong.blog.51cto.com/7513022/1304746)
  4. Struts2里的Action返回Json数据
  5. 【numpy】中,对axis【轴】axis=0 axis=1的理解
  6. html语言中括号怎么打,HTML语言中括号(尖括号)的字符编码
  7. 阿里云 docker php mysql_PHP开发环境02 - 阿里云Ubuntu使用Docker配置PHP环境(只限于学习)...
  8. FPGA设计中RAM的一些基本概念
  9. VMware 扩展磁盘容量
  10. Qt学习笔记之QTextCodec