ASP.NET Web 缓存增强性能和可伸缩性
ASP.NET Web 缓存增强性能和可伸缩性
概览:
瓶颈限制显著降低
静态和动态 Web 缓存
必备的功能:过期、数据库依赖关系、PDF 部分内容以及更多功能
对全球组织的特殊好处
Web 缓存服务器群集
免费和商用解决方案
Contents
问题:ASP.NET 瓶颈限制
解决方案:ASP.NET Web 缓存
Web 缓存中的必备功能
过期
过期时重新加载页面
部分页面缓存
数据库依赖关系
文件依赖关系
PDF 部分内容
ViewState 缓存
Gzip 压缩
可伸缩和动态 Web 缓存群集
缓存地理分布
脱离数据库
指导原则
基于 ASP.NET(Microsoft Web 应用程序框架)的应用程序对企业的影响日益增大。 同时,由用户和处理数量的不断增长而导致的瓶颈限制继续促使 IT 专家们寻求更为优异的性能和可伸缩性。
问题:ASP.NET 瓶颈限制
导致 ASP.NET 应用程序中出现瓶颈的原因有多种。 最明显的原因为:数据存储技术不如 Web 应用程序体系结构的伸缩性强。 当您试图扩展应用程序时,ASP.NET 应用程序中处理数据存储或数据访问的任何一个位置都将立即陷入阻塞状态。 发生这种情况的两个区域为:会话状态存储以及来自关系数据库或大型数据库的应用程序数据(请参见图 1)。
图 1 ASP.NET 应用程序中产生性能瓶颈的常见区域。
如果 ASP.NET 应用程序正在对 Web 服务进行面向服务的体系结构 (SOA) 调用,则会出现另一种瓶颈限制。 之所以会出现速度减慢的情况,是因为 Web 服务与 ASP.NET 应用程序存在同样的问题(也就是说,在数据存储和访问中)。 很可能是 Web 服务场正在跨多个应用程序共享,因此其受到的压力远远大于任何一个 ASP.NET 应用程序,从而造成了可伸缩性瓶颈。
用户浏览器和 ASP.NET Web 场之间也可能出现瓶颈。 由于 ASP.NET 页面需要反复执行,从而大量占用 CPU 处理能力,以上瓶颈现象的发生与此相关。 在该过程中还会向用户频繁发送大量数据元素(图像、文档等)。
在 TechNet 杂志之前的文章中,我讨论了 ASP.NET 性能和可伸缩性的问题,主要侧重于会话状态和应用程序数据(请参阅“为 ASP.NET 应用程序提供可伸缩性”,2009年 6 月)。 在这篇文章中,我介绍了这些问题发生的原因,其中包括 ASP.NET 会话状态为何会随着 Web 场的增长而陷入阻塞状态。 我在文中提到,对于 ASP.NET 会话状态,分布式内存缓存是 Microsoft 现有存储方案的绝佳替代方案。 我描述了来自数据库的应用程序数据如
相关文档:
首页:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head ......
//TransmitFile实现下载
protected void Button1_Click(object sender, EventArgs
e)
{
/*
微软为Response对象提供了一个新的方法TransmitFile来解决使用Response.BinaryWrite
......
1. 数据库访问性能优化
数据库的连接和关闭
访问数据库资源需要创建连接、打开连接和关闭连接几个操作。这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源。ASP.NET中提供了连接池(Connection Pool)改善打开和关闭数据库对性能的影响。系统将用户的数据库连接放在连接池中,需要时取出,关闭时收回 ......
由于其致力于在一个单独页面上面提供功能,Ajax web 门户都是 Ajax 技术的杰作。在页面上提供众多的功能,同时又有服务器端和客户端良好的性能,对于架构是一个非常大的挑战。一些挑战只有在整合众多特性的 web 应用程序或者聚合其他网站内用的程序上面才有的。
本章解释了 Dropthings 的架构,你也可以在你的应用程序使用 ......
FormExtensions类
FormExtensions类是一个静态类,定义了3种类型的扩展方法:BeginForm、BeginRouteForm、EndForm;在实际开发中,也可以使用using语句,而不需要写EndForm扩展方法。
InputExtensions类
InputExtensions类定义了5种类型的扩展方法:CheckBox,Hidden,Password,RadioButton,TextBox.
<field ......