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. oracle DBMS_LOCK.SLEEP()的使用

    create or replace procedure times isii positive:=1;beginloop dbms_lock.sleep(1);dbms_output.put_line ...

  2. 使用django-admin.py 时出错

    我在安装好django后,运行django-admin.py 时出现两处错误: 一.当你在dos命令下输入django-admin.py 时不会运行,而是以记事本的方式打开了. 解决办法:找到你的dj ...

  3. Win7 64位 VS2013环境编译Lua5.3.1

    主要参考这篇文章,原文有几个错误顺便改正了. 在Windows下使用Visual Studio编译Lua5.3 写本文时Lua官方网站放出的新版本为5.3.1,然后我不知道为啥,神奇的国内不能访问Lu ...

  4. Python 学习---------Day6

    18章 模块:宏伟蓝图 import 使客户端(导入者)以一个整体获取一个模块 from 允许客户端从一个模块文件中获取特定的变量名 reload 在不中止Python程序的情况下,提供了一种重新载入 ...

  5. P1907飞扬的小鸟

    P1907飞扬的小鸟 描述 Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了水管或 ...

  6. 转发!HTML 复选框 checkbox 的 JavaScript 的全选和全反选

    checkbox 或者按钮实现 form 内的 checkbox 全选或者反选,代码很简单,全部代码如下: <html> <head> <meta http-equiv= ...

  7. IOS的一些小技巧

    1.播放短声音 SystemSoundID shake_sound_male_id = ; NSString *thesoundFilePath = [[NSBundle mainBundle] pa ...

  8. 51NOD算法马拉松11 B君的竞技场

    传送门 这题我在比赛的时候竟然没有想出来,真是-- 这道题我们可以想一想怎么搞定获胜的概率p. 我们发现再怎么这个p都是搞不了的.所以我们可以积一下分,然后就可以不用去管p了.我们要做的就是求出一个关 ...

  9. fatal error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "StdAfx.h"”? 解决方法

    错误描述: fatal error C1010: 在查找预编译头时遇到意外的文件结尾.是否忘记了向源中添加“#include "StdAfx.h"”? 错误分析:     此错误发 ...

  10. 测试CAS

    参考博客 http://www.cnblogs.com/adolfmc/archive/2012/07/16/2593291.html 准备工作: 1.cas服务器:http://cas:8443/l ...