web应用程序性能优化
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应用程序性能优化的更多相关文章
- Web标准中用于改善Web应用程序性能的各种方法总结
提起Web应用程序中的性能改善,广大开发者们可能会想到JavaScript与DOM访问等基于各种既存技术的性能改善方法.最近,各种性能改善方法被汇总成为一个Web标准. 本文对Web标准中所包含的各种 ...
- iOS程序性能优化
iOS程序性能优化 一.初级 使用ARC进行内存管理 在iOS5发布的ARC,它解决了最常见的内存泄露问题.但是值得注意的是,ARC并不能避免所有的内存泄露.使用ARC之后,工程中可能还会有内存泄露, ...
- iOS 程序性能优化
前言 转载自:http://www.samirchen.com/ios-performance-optimization/ 程序性能优化不应该是一件放在功能完成之后的事,对性能的概念应该从我们一开始写 ...
- QQ音乐Android客户端Web页面通用性能优化实践
QQ音乐 Android 客户端的 Web 页面日均 PV 达到千万量级,然而页面的打开耗时与 Native 页面相距甚远,需要系统性优化.本文将介绍 QQ 音乐 Android 客户端在进行 Web ...
- C++ 应用程序性能优化
C++ 应用程序性能优化 eryar@163.com 1. Introduction 对于几何造型内核OpenCASCADE,由于会涉及到大量的数值算法,如矩阵相关计算,微积分,Newton迭代法解方 ...
- Java程序性能优化技巧
Java程序性能优化技巧 多线程.集合.网络编程.内存优化.缓冲..spring.设计模式.软件工程.编程思想 1.生成对象时,合理分配空间和大小new ArrayList(100); 2.优化for ...
- 《Java程序性能优化:让你的Java程序更快、更稳定》
Java程序性能优化:让你的Java程序更快.更稳定, 卓越网更便宜,不错的书吧
- [JAVA] java程序性能优化
一.避免在循环条件中使用复杂表达式 在不做编译优化的情况下,在循环中,循环条件会被反复计算,如果不使用复杂表达式,而使循环条件值不变的话,程序将会运行的更快. 例子: import java.util ...
- [python]用profile协助程序性能优化
转自:http://blog.csdn.net/gzlaiyonghao/article/details/1483728 本文最初发表于恋花蝶的博客http://blog.csdn.net/lanph ...
随机推荐
- Django提交POST表单“CSRF verification failed. Request aborted”问题的解决
1.环境 python 3.4 Django 1.7 Visual Studio 2015 PTVS 2.问题 提交表单,出现以下错误: CSRF verification failed. Reque ...
- CodeForces 743C Vladik and fractions (数论)
题意:给定n,求三个不同的数满足,2/n = 1/x + 1/y + 1/z. 析:首先1是没有解的,然后其他解都可以这样来表示 1/n, 1/(n+1), 1/(n*(n+1)),这三个解. 代码如 ...
- Git很好的教程
本文地址:http://www.cnblogs.com/yhLinux/p/4067064.html 很好的Git教程,作为初学者,跟着作者的教程走了一遍之后,基本熟悉了Git的常用操作,此教程简洁明 ...
- 【开发环境】JAVA 环境变量批处理
@echo off set regpath=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environmen ...
- php中explode与split的区别介绍
php中explode与split的区别介绍 作者: 字体:[增加 减小] 类型:转载 今天在使用split时遇到一些问题.还是对函数理解不深刻,特写出来做个记 首先来看下两个方法的定义: 函数原型: ...
- php+mysql+apache+nginx
http://www.cnblogs.com/xiaoluo501395377/archive/2013/04/07/3003278.html 安装mysql rpm -qa | grep mysql ...
- 分享一个批量导出当前实例下的所有linkedserver脚本
分享一个批量导出当前实例下的所有linkedserver脚本 很多时候,我们都需要导出实例下面的登录用户,job,linkedserver等等 导出job比较复杂,下午写了一个脚本把所有的linked ...
- 微信网页开发之创建Controller(三)
首先,我们需要在App区域下添加一个控制器,这里我们就以AppDemoController为例.如下图所示: 注意:你也可以自己创建其他区域,只是这里推荐使用App区域. 创建好之后,请添加自己的Ac ...
- python post
使用python 提交表单包括图片以及参数信息,详见代码 # -*- coding: utf-8 -*- import MultipartPostHandler, urllib2, cookielib ...
- Win10 UWP应用发布流程
简介 Win10 UWP应用作为和Win8.1 UAP应用不同的一种新应用形式,其上传至Windows应用商店的流程也有了一些改变. 这篇博文记录了我们发布一款Win10 UWP应用的基本流程,希望为 ...