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. 机器学习利器——Scikit-learn的安装

    由于笔者最近在进行毕业论文的准备,且毕业论文中需要用到Python版本的机器学习库——scikit-learn.所以最近三天一直在Windows上部署这个框架,终于部署成功了... 首先打开加州大学底 ...

  2. Ubuntu grub引导修复

    通过USB启动盘安装系统时将引导程序指定到/dev/sdb1,正常应该是指定到/dev/sdb才是,导致安装之后启动不起来. 重新通过USB启动盘进入试用界面,然后打开终端通过如下操作进行grub引导 ...

  3. myBatis+SpringMVC+Maven整合

    一.先创建表结构 二.使用generator通过表结构自动生成model和dao.mapper 使用步骤: 1.解压generator.rar文件 2.文件中的generator.xml文件需要进行修 ...

  4. 大文件下载控件(down2)-示例更新-Xproer.HttpDownloader

    版权所有 2009-2016 荆门泽优软件有限公司 保留所有权利 官方网站:http://www.ncmem.com/ 产品首页:http://www.ncmem.com/webapp/down2/i ...

  5. JDK6环境下升级项目到springframework4.x和tomcat7.x

    springframework 3.x升级到 4.x  1 xsi:schemaLocation 对应的3.x->4.x 2 pom  springframework <propertie ...

  6. PL/SQL通过存储过程为相同数据添加序号

    在Oracle数据库中存有一串数据(Ori_Seq),数据包含不等量重复: 为方便查看与管理,现希望添加一字段(New_Seq),在原有数据的末尾为其添加一串序号,相同数据序号从小到大排列,序号长度为 ...

  7. toad的基本操作

    1.把鼠标停在sql所在行,然后ctrl+Enter直接执行当前sql. 2.解决Toad对中文显示乱码问题(如果数据库所在主机的NLS_LANG是AMERICAN_AMERICA.WE8ISO885 ...

  8. 读Lua游戏开发实践指南

    11月11日开读,到今天正好一个月. 起因是被裁员之后,发现很多公司都在使用lua编写cocos2d-x游戏,原因是上手快,技术人员比较便宜. 如果引擎封装比较好,几乎在lua里写写基本逻辑就行了,不 ...

  9. js基础知识:变量

    一.什么是变量? 在JavaScript中,变量用来存放值的,存放任何数据类型的值都可以,它就是值的容器. 二.变量怎么用? (一)用var声明1个变量 在使用变量之前,需要var关键字来声明变量,变 ...

  10. PeerConnection

    Example(摘) /*When two peers decide they are going to set up a connection to each other, they both go ...