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依赖。

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

最新文章

  1. 【poj2096】Collecting Bugs
  2. C++ 为什么拷贝构造函数参数必须为引用?赋值构造函数参数也必须为引用吗?
  3. android开发环境搭建日记和嵌入式Android开发环境初探
  4. 测试Centos硬盘读写速度
  5. POJ 2676 Sudoku
  6. nodeAPI--FS
  7. 数组 splice 方法
  8. protobuf的反射机制
  9. Android studio 中国的垃圾问题解决
  10. php基础(五)日期
  11. 【1414软工助教】团队作业4——第一次项目冲刺(Alpha版本) 得分榜
  12. linux里所有命令都不存在
  13. lockable JS function,解锁操作之前,不能重复操作
  14. Django知识总结(三)
  15. Python-简单打印进度条
  16. ReactiveX 学习笔记(12)调度器
  17. xshell配置通过堡垒机直接登陆到内网机器
  18. 团队项目(第三周)—GG队
  19. 学习Tkinter
  20. 希尔排序算法-python实现

热门文章

  1. Java实现视频网站的视频上传、视频转码、视频关键帧抽图, 及视频播放功能
  2. testlink简单部署
  3. getline函数彻底说明
  4. &lt;Oracle Database&gt;后台进程
  5. String.Format格式说明——复制于DotNet笔记
  6. 理解一下单片机的I2C和SPI通信
  7. 建立自己的Visual Studio工程模板
  8. Ubuntu系统下的第一个console程序
  9. Linux 网络编程(IO模型)
  10. 解读jQuery中extend函数