web应用程序基本上都是在浏览器地址栏输入一段网站,然后进入,最后浏览器显示你想要的东西。

这就是用户所能体会到的东西。那作为程序员我们看到了什么呢?

一次HTTP 请求主要的流程是:

1、DNS服务器解析域名(浏览器地址栏的地址)获取相应的IP地址、端口号、 服务名。

2、客户端根据解析后的地址向服务啊发送请求(建立与服务器的联接)。

3、服务器根据用户的请求信息处理请求,并做出响应。

4、浏览器更具服务器响应的数据(HTML/css/js)渲染页面。

那要优化程序性能,作为程序员我们能优化哪里、怎么优化呢。

第一步:我们没法控制。

第二步:建立链接更多的是网络问题。我们能做的也不多。

第三步:服务器处理请求,我们做的就多了。因为我们是程序员吗,我们就是处理用户请求业务的。

a、处理业务肯定要与数据库打交道,我们可以使用数据源使对数据库的链接做到最优(C3PO、DBCP)

b、与数据库建立链接后,数据库处理我们的请求,这就要求我们的数据库设计优化、SQL语句的优化。

c、对数据做缓存处理,有些请求的数据变化不平凡,我们可以对数据做缓存(hibernate的二级缓存 、 ehcache)。

d、对于一些对数据是实时性要求不高的页面可以做网页缓存(OSCache)

第四步:浏览器渲染HTML页面,我们都知道一个HTML页面中往往存在大量的脚本(css、js)而,浏览器在渲染页面时遇到每个

<link rel="t" href" type="text/css">和 <script src=""></script>标签时都会向服务啊发送一次HTTP请求,而每次HTTP

请求的代价很大,所以我们要 :

a、尽量减少脚本文件。

b、尽量使脚本文件变小(压缩后发布使开发版与生产版不同)

c、对于大量的JS脚本我们可以使用 requeirJs去管理我们的js依赖。

当然再好的服务器也有一个访问量度,如果用户很多,访问量很大。那就使用多台服务器。也就是所谓的集群

web应用程序性能优化的更多相关文章

  1. Web标准中用于改善Web应用程序性能的各种方法总结

    提起Web应用程序中的性能改善,广大开发者们可能会想到JavaScript与DOM访问等基于各种既存技术的性能改善方法.最近,各种性能改善方法被汇总成为一个Web标准. 本文对Web标准中所包含的各种 ...

  2. iOS程序性能优化

    iOS程序性能优化 一.初级 使用ARC进行内存管理 在iOS5发布的ARC,它解决了最常见的内存泄露问题.但是值得注意的是,ARC并不能避免所有的内存泄露.使用ARC之后,工程中可能还会有内存泄露, ...

  3. iOS 程序性能优化

    前言 转载自:http://www.samirchen.com/ios-performance-optimization/ 程序性能优化不应该是一件放在功能完成之后的事,对性能的概念应该从我们一开始写 ...

  4. QQ音乐Android客户端Web页面通用性能优化实践

    QQ音乐 Android 客户端的 Web 页面日均 PV 达到千万量级,然而页面的打开耗时与 Native 页面相距甚远,需要系统性优化.本文将介绍 QQ 音乐 Android 客户端在进行 Web ...

  5. C++ 应用程序性能优化

    C++ 应用程序性能优化 eryar@163.com 1. Introduction 对于几何造型内核OpenCASCADE,由于会涉及到大量的数值算法,如矩阵相关计算,微积分,Newton迭代法解方 ...

  6. Java程序性能优化技巧

    Java程序性能优化技巧 多线程.集合.网络编程.内存优化.缓冲..spring.设计模式.软件工程.编程思想 1.生成对象时,合理分配空间和大小new ArrayList(100); 2.优化for ...

  7. 《Java程序性能优化:让你的Java程序更快、更稳定》

    Java程序性能优化:让你的Java程序更快.更稳定, 卓越网更便宜,不错的书吧

  8. [JAVA] java程序性能优化

    一.避免在循环条件中使用复杂表达式 在不做编译优化的情况下,在循环中,循环条件会被反复计算,如果不使用复杂表达式,而使循环条件值不变的话,程序将会运行的更快. 例子: import java.util ...

  9. [python]用profile协助程序性能优化

    转自:http://blog.csdn.net/gzlaiyonghao/article/details/1483728 本文最初发表于恋花蝶的博客http://blog.csdn.net/lanph ...

随机推荐

  1. 使用WindowsPE破解管理员密码

    使用WindowsPE破解管理员密码 1将操作系统关闭,编辑虚拟机设置,先用老毛桃生成一个ISO,点.iso制作,再点生成ISO文件,然后选择WinPE的ISO镜像存放的位置 将WinPE.ISO文件 ...

  2. gulp 配置前端项目打包

    项目发布时,需要对项目js文件进行压缩,混淆,连接等操作以减小项目http请求,加快访问. gulpjs.com中有很多插件可以用来配置打包部署. 需要用的常用插件有: gulp-jsmin  压缩j ...

  3. React Native填坑之旅--Stateless组件

    Stateless component也叫无状态组件.有三种方法可以创建无状态组件. 坑 一般一个组件是怎么定义的: 很久以前的方法: const Heading = createClass({ re ...

  4. hdu acm 1028 数字拆分Ignatius and the Princess III

    Ignatius and the Princess III Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K ...

  5. 前端学习之回调函数、call方法、apply方法

    今天学习的内容比较少,大部分时间是自己在写qq音乐和京东移动端的页面.现在说说今天学到的内容: 首先,回调函数,就是在函数内部中调用另外一个函数, 将一个函数当作参数传给另一个函数,被传的函数叫做回调 ...

  6. IEnumerable<IEnumerable<string>>结构解析通用解决方案(支持指定属性顺序)

    一.前言 类似如下字符串 "ID", "NameValue", "CodeValue", "ExchangeTypeValue&q ...

  7. win下修改mysql默认的字符集以防止乱码出现

    环境:win8.1+mysql5.6.11+xampp(v3.2.1) 默认的编码如下 查看方式: show variables like 'character%'; 结果: 从以上信息可知数据库的编 ...

  8. Web Essentials之JavaScript,TypeScript和CoffeeScript

    返回Web Essentials功能目录 一些Javascript功能也可以用于TypeScript. 本篇目录 功能 智能提示 TypeScript CoffeeScript 功能 JSHint J ...

  9. hadoop 笔记(hbase)

    hbase 基础: hbase是基于列的数据,其数据模式如下: 1.安装 1.1)hbase安装分为单机.伪分布式.分布式,单机下安装不依赖于hadoop:因为不需要分布式文件系统支持: 1.2)安装 ...

  10. linux 2.6 驱动笔记(三)

    驱动的并发与应用的并发实现一样,以信号量为例,修改基本字符驱动代码如下: 1. 增加sem定义 struct globalmem_dev{ struct cdev cdev; /*linux 2.6 ...