性能相关的新特性
新的资源监控器选项
Session State的改进
应用程序的自动运行
Response.RedirectPermanent
(一)资源监控
CPU和内存都是有限资源
传统监测都是在进程级的
– 无法监测某个应用域
CLR 4引进了“ARM”
– Application domain Resource Management
基于ARM的性能计数器
– Managed Memory Used
– % Managed Processor Time
增加对站点性能的监控
更改Aspnet.config 文件(C:/Windows/Microsoft.NET下对应framework中)
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<runtime>
<legacyUnhandledExceptionPolicy enabled="false" />
<legacyImpersonationPolicy enabled="true"/>
<alwaysFlowImpersonationPolicy enabled="false"/>
<SymbolReadingPolicy enabled="1" />
<shadowCopyVerifyByTimestamp enabled="true"/>
<appDomainResourceMonitoring enabled="true"/> 增加这一行
</runtime>
<startup useLegacyV2RuntimeActivationPolicy="true" />
</configuration>
就可以在性能监控中查看各个站点应用的性能使用情况
(二)Session State
跨进程使用的session state(可以使用SQL SERVER)
– 变得更快
自动压缩(减少流量,但是占用更多的CPU)
– 在很大程度上减少网络流量
– 大小减少到1/3到2/3
通过指令控制session state开/关
– 仅在真正需要时才用
局部的session state
– 仅使用指定key的Session来减少网络流量
<sessionState mode="SQLServer"
compressionEnabled="true"
allowCustomSqlDatabase="true"
cookieless="false"
timeout="30"
sqlConnectionString="Data Source=localhost;UID=sa;PWD=123;Initial Catalog=Session;">
</sessionState>
(三)应用程序的自动运行
提高网站性能
– 使得个别网页运行的更快
– 为第一次运行网站应用“隐藏”启动成本
通过ASP.NET和IIS隐藏启动
– IIS 7.5能够“自启动”工作进程和应用程序
– ASP.NET 4 结合IIS 7.5实现自启动
我们可以透过在applicationHost.config中设定
以下内容让特定的Pool永远在暖机状态
<applicationPools>
<add name="MyApplicationPool" startMode="AlwaysRunning" />
</applicationPools>
(四)
Response.RedirectPermanent
• Response.Redirect生成HTTP 302的状态码,是临时重定向,会引发客户端对web服务器的2次请求
实际上发生两次请求
• Response.RedirectPermanent生成HTTP 301的状态码,是永久重定向,下次访问时浏览器或搜索引
从第二次开始时一次请求
擎直接访问重定向后的地址。
(五)其他
Session State的扩展
• 仍可通过SessionStateStoreProviderBase
实现自定义的Session存储机制
• 官方将提供新的Session State Provider
Output Cache的扩展
• 通过OutputCacheProvider派生出一个新的
class实现自定义的Output Cache Provider
• 官方将提供新的Output Cache Provider
– Windows AppFabric Caching(分布式缓存)
– 基于磁盘存储的Output Cache Provider
• 扩展机制支持
– 绝对过期时间
– 文件依赖
– 静态替换和验证等
自定义编码的扩展
• 通过System.Web.Util.HttpEncoder派生出
一个新的class实现自定义编码
• 並在web.config中設定:
<httpRuntime encoderType="Samples.MyCustomEncoder, Samples" />
• 当调用System.Web.HttpUtility或
System.Web.HttpServerUtility的公开方法
时自动调用我们自定义的编码逻辑
Request Validation的扩展
• 通过System.Web.Util.RequestValidator派
生出一个新的class实现自定义
RequestValidation
• 並在web.config中設定:
<httpRuntime requestValidationType="Samples.MyValidator, Samples" />
• 然后网站的Request均使用自定义的逻辑进
行检查
其他
• Web.config的httpRuntime可以设置url长度、
字符限制等规则
– maxRequestPathLength
– maxQueryStringLength
– requestPathInvalidChars
– ……
• 通过RouteTable.Routes对URL重写