热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

WEB应用性能优化常规方法

基于微软平台WEB应用程序在投入生产环境运行时通常会碰到由于访问压力增大而需要进行性能优化,这个阶段往往被开发组忽略,项目日程计划中往往没有安排(我见过的项目大约有80%在系统开发阶段都没有能够在系统

基于微软平台WEB应用程序在投入生产环境运行时通常会碰到由于访问压力增大而需要进行性能优化,这个阶段往往被开发组忽略,项目日程计划中往往没有安排(我见过的项目大约有80%在系统开发阶段都没有能够在系统架构中考虑到这个问题),

在UAT阶段此问题的出现一般是UAT用户根据感觉来提出此问题:系统响应非常慢,页面刷新要等10秒钟... 开发组要向客户提出解决方案来解决此问题,通常的方式是对页面的响应速度给出量化的数据来衡量,与客户就页面响应速度达成一个量化的目标。目标确定后,作为开发组必须给出优化的方法,以下是常规方法:

Yahoo针对FireFox浏览器推出了YSlow插件,用于分析网页,并根据一些高性能网站的规则进行相应的评级打分,对于网页性能优化有很好的帮助作用,告诉你那些部分影响了你的网页速度,并告诉你如何基于某些规则而进行优化。但是需要安装FireFox浏览器且必须安装FireBug和YSlow这两个插件,这两个插件貌似没有中文版的。网上搜索到的for ie版本均是假的

Fiddler是一个Web Debug工具(最重要的是这个工具即适用于IE也适用于FireFox等浏览器,HttpWatch也是类似的工具,不过HttpWatch专业版不是免费的),该工具可分析浏览器发往服务器的HTTP请求以及服务器的返回信息,可以详细看到每个页面的响应时间以及完成一个功能所发生的所有Http请求统计,并且有图形化的时间消耗图,可以直观的分析某个功能请求中速度慢的是哪个页面或者资源(图片、脚本等)请求。

 这里列出以下常规优化动作:

  1. 通过HTTP请求分析,尽可能减少HTTP请求数量,通常是项目工程中的图片、CSS、JS,尽可能合并项目工程中的这些资源,以达到最少的Http请求次数
  2. 使用CDN(内容分发网络),这个方案要小心提出,CDN的建设复杂度比较高,通常会导致客户另行投入成本(比如采购硬件或者软件来实现),对于跨国性或者全国性多点分布式部署的项目可以提出此建议
  3. 启用WEB服务器的内容过期功能,这个也主要是针对项目工程中的CSS、JS等资源文件而言,在IIS中启用内容过期时,浏览器会根据服务器返回的HTTPHeader信息来主动决定从本地缓存读取还是从服务器读取,没有启用内容过期时,浏览器每次发请求给WEB服务器,服务器返回304状态来表示可以从本地缓存读取,多一次访问请求。
  4. 启用HTTP压缩,这是通过压缩服务器与浏览器之间传输的文本内容(通常是CSS、JS),启用方法是在IIS中进行配置。这个方法视1、3两个方法执行的结果而定是否进行,目前的AJAX系统可以考虑这个方法
  5. CSS在页面头部、JS在页面尾部、且CSS、JS都使用外部文件引用方式,有利于形成有效的本地缓存
  6. 单个页面中包含的主机域名保持在4个以内,避免DNS查询带来的额外开销。在企业网络环境复杂的情况下这个方法往往能收到奇效
  7. JS文件进行压缩处理,有一些工具能够将JS文件进行压缩,以减小网络传输流量,比如ESC的最大压缩比率能达到65%,效果比较明显。这个方法能否使用需要进行详细测试,因为压缩工具有不同的特性,可能对JS会造成损坏,比如ESC工具的js压缩级别4会把变量名修改,如果你的js中用到了全局变量或者类的话,就不能使用该压缩级别了,否则其它使用你的js的文件可能会无法正常运行
  8. 避免服务端重定向操作,重定向操作带来的额外开销比较多,在系统开发初期就要避免掉这种操作
  9. 去除WEB服务器端得ETags标签,ETags是WEB服务器和浏览器用于判断浏览器缓存中的内容和服务器中的原始内容是否匹配的一种机制,去掉ETag标签会减少响应和下次请求中文件的大小,从而提高WEB服务器的性能。此方法需谨慎使用,企业应用中往往要求页面每次都必须请求新内容,使用此方法可能会造成一些问题。

 

 


推荐阅读
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • REST与RPC:选择哪种API架构风格?
    在探讨REST与RPC这两种API架构风格的选择时,本文首先介绍了RPC(远程过程调用)的概念。RPC允许客户端通过网络调用远程服务器上的函数或方法,从而实现分布式系统的功能调用。相比之下,REST(Representational State Transfer)则基于资源的交互模型,通过HTTP协议进行数据传输和操作。本文将详细分析两种架构风格的特点、适用场景及其优缺点,帮助开发者根据具体需求做出合适的选择。 ... [详细]
  • Cookie学习小结
    Cookie学习小结 ... [详细]
  • 本文将介绍如何在混合开发(Hybrid)应用中实现Native与HTML5的交互,包括基本概念、学习目标以及具体的实现步骤。 ... [详细]
  • HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送www方式的数据。HTTP协议采用了请求响应模型。客服端向服务器发送一 ... [详细]
  • 本文详细介绍了Java代码分层的基本概念和常见分层模式,特别是MVC模式。同时探讨了不同项目需求下的分层策略,帮助读者更好地理解和应用Java分层思想。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • V8不仅是一款著名的八缸发动机,广泛应用于道奇Charger、宾利Continental GT和BossHoss摩托车中。自2008年以来,作为Chromium项目的一部分,V8 JavaScript引擎在性能优化和技术创新方面取得了显著进展。该引擎通过先进的编译技术和高效的垃圾回收机制,显著提升了JavaScript的执行效率,为现代Web应用提供了强大的支持。持续的优化和创新使得V8在处理复杂计算和大规模数据时表现更加出色,成为众多开发者和企业的首选。 ... [详细]
  • 本文深入探讨了NoSQL数据库的四大主要类型:键值对存储、文档存储、列式存储和图数据库。NoSQL(Not Only SQL)是指一系列非关系型数据库系统,它们不依赖于固定模式的数据存储方式,能够灵活处理大规模、高并发的数据需求。键值对存储适用于简单的数据结构;文档存储支持复杂的数据对象;列式存储优化了大数据量的读写性能;而图数据库则擅长处理复杂的关系网络。每种类型的NoSQL数据库都有其独特的优势和应用场景,本文将详细分析它们的特点及应用实例。 ... [详细]
  • 第二章:Kafka基础入门与核心概念解析
    本章节主要介绍了Kafka的基本概念及其核心特性。Kafka是一种分布式消息发布和订阅系统,以其卓越的性能和高吞吐量而著称。最初,Kafka被设计用于LinkedIn的活动流和运营数据处理,旨在高效地管理和传输大规模的数据流。这些数据主要包括用户活动记录、系统日志和其他实时信息。通过深入解析Kafka的设计原理和应用场景,读者将能够更好地理解其在现代大数据架构中的重要地位。 ... [详细]
  • 本文详细介绍了如何安全地手动卸载Exchange Server 2003,以确保系统的稳定性和数据的完整性。根据微软官方支持文档(https://support.microsoft.com/kb833396/zh-cn),在进行卸载操作前,需要特别注意备份重要数据,并遵循一系列严格的步骤,以避免对现有网络环境造成不利影响。此外,文章还提供了详细的故障排除指南,帮助管理员在遇到问题时能够迅速解决,确保整个卸载过程顺利进行。 ... [详细]
  • 如何设置域名默认301重定向至www前缀
    在进行域名默认301重定向至www前缀的操作前,确保你已经拥有一个有效的域名,并且该域名已正确解析到外部主机地址,能够正常访问网站。本文主要针对IIS 7及以上版本的用户,IIS 7之前的版本不适用。我们将详细介绍如何通过IIS管理器配置301重定向,确保所有请求都能自动跳转到带有www前缀的URL,从而提升网站的SEO效果和用户体验。 ... [详细]
  • 为了向用户提供虚拟应用程序,通常会在基础架构中部署StoreFront或Web Interface。为了确保安全的远程访问,通常需要在DMZ中配置Secure Gateway或Access Gateway。本文详细对比了这两种界面工具的功能特性,包括用户管理、安全性、性能优化等方面,为企业选择合适的解决方案提供了全面的参考。 ... [详细]
  • 本文深入探讨了ASP.NET中ViewState、Cookie和Session三种状态管理技术的区别与应用场景。ViewState主要用于保存页面控件的状态信息,确保在多次往返服务器过程中数据的一致性;Cookie则存储在客户端,适用于保存少量用户偏好设置等非敏感信息;而Session则在服务器端存储数据,适合处理需要跨页面保持的数据。文章详细分析了这三种技术的工作原理及其优缺点,并提供了实际应用中的最佳实践建议。 ... [详细]
author-avatar
孙一诺她爹_480
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有