1.可扩展输出缓存

自从ASP.NET 1.0发布开始,一般都是通过使用输出缓存将页、控件和http响应保存在内存中。对于后续的Web请求,ASP.NET可以从内存中检索存在的缓存输出并不是从头开始重新生成输出,从而更快地提供响应。但该方法有一个限制,就是缓存的数据必须存储在内存中。在负载较大的服务器上,输出缓存的内存需求可能会和Web应用程序其它它部分的内存需求产生冲突。

ASP.NET 4 为输出缓存增加了扩展性,使您能够配置一个或多个自定义输出缓存提供程序。输出缓存提供程序可使用任何存储机制保存 HTML 内容。这些存储选项包括本地或远程磁盘、云存储和分布式缓存引擎。

借助ASP.NET 4 中可以定制输出缓存提供程序的功能,我们就可以为网站设计更为主动而且更加智勇双全能的输出缓存策略。例如,我们可以创建这样一个输出缓存提供程序,该程序将站点流量“排名前10”的页面缓存在内存里,而将其它的页面缓存在磁盘里。或者,也可以对所呈现页面的各种变化因素组合进行缓存,但应该使用分布式缓存以减少前端Web服务器的内存消耗。

我们可以创建继承自OutPutCacheProvider类型的类来自定义输出缓存提供程序。随后,可以通过在web.config中进行配置该提供程序,设置outputCache节点的providers子节点,如下面的示例所示:

  1. <caching>
  2. <outputCache defaultProvider="AspNetInternalProvider">
  3. <providers>
  4. <add name="DiskCache"
  5. type="Test.OutputCacheEx.DiskOutputCacheProvider, DiskCacheProvider"/>
  6. </providers>
  7. </outputCache>
  8. </caching>

在ASP.NET 4 的默认输出缓存策略中。所有的HTTP响应、所呈现的页面和控件缓存均使用上例所示的默认输出缓存提供程序(其中defaultProvider属性值为AspNetInternalProvider)。通过为defaultProvider指定不同的提供程序。就可以更改web应用程序的默认输出缓存提供程序。

另外,还可以针对每个用户控件和各个请求选择不同的输出缓存提供程序。要为不同的Web用户控件选择不同的输出缓存提供程序,最简便的方法是设置页面或控件指令中新增加的providerName属性,如下面的示例所示:

<%@ OutputCache Duration="60" VaryByParam="None"     providerName="DiskCache" %>

若要为某个HTTP请求指定不同的输出缓存提供程序,可以覆盖Global.asax文件中新增加的GetOutputCacheProviderName方法,以编程的方式指定要用于特定请求的提供程序。

2.预加载Web应用程序

某些Web应用程序在第一次请求提供服务之前,需要加载大量的数据或执行开销很大的初始化处理。在ASP.NET早期版本中,对于此类情况,必须采用自定义方法“唤醒”ASP.NET应用程序,然后在Global.asax文件中的Application_Load方法中运行初始化代码。

为应对这种情况,当ASP.NET 4在Windows Server 2008 R2上的IIS7.5中运行时,ASP.NET 4提供一种新的应用程序预加载管理器。预加载功能提供了一种可控的方法,用于启动应用程序池,初始化ASP.NET应用程序,然后接受HTTP请求。通过这种方法,您可以在处理第一项HTTP请求之前执行开销很大的应用程序初始化的工作。例如,可以使用预加载管理器初始化某个应用程序,然后向负载平衡器发生信号,告知应用程序已初始化并做好接受HTTP请求的准备。

若要使用应用程序预加载管理器,就需要配置applicationHost.config文件,设置IIS 7.5中的应用程序池为自动启动,配置如下:

  1. <applicationPools>
  2. <add name="MyApplicationPool" startMode="AlwaysRunning" />
  3. </applicationPools>

由于一个应用程序池可以包含多个应用程序,因此我们就需要通过使用applicationHost.config文件中的以下配置分别指定要自动启动的各个应用程序:

  1. <sites>
  2. <site name="MySite" id="1">
  3. <application path="/"
  4. serviceAutoStartEnabled="true"
  5. serviceAutoStartProvider="PrewarmMyCache" >
  6. <!-- Additional content -->
  7. </application>
  8. </site>
  9. </sites>
  10. <!-- Additional content -->
  11. <serviceAutoStartProviders>
  12. <add name="PrewarmMyCache"
  13. type="MyNamespace.CustomInitialization, MyLibrary" />
  14. </serviceAutoStartProviders>

3.永久重定向页面

在应用程序的生命周期内,Web应用程序中有可能修改url的显示规则。

在ASP.NET 中,开发人员处理对旧的URL的请求的传统方式是使用Redirect方法将请求转发至新的URL。然而,Redirect方法会发出HTTP 302临时重定向。这会产生额外的HTTP往返。也不是对搜索引擎的友好。

ASP.NET 4 增加了一个RedirectPermanent帮助方法,使用该方法可以方便地发生http 301(永久跳转)的响应,如下面的示例所示:

RedirectPermanent("/newpath/foroldcontent.aspx");
4.会话状态压缩

默认情况下,ASP.NET 提供两用于存储整个Web应用程序中的会话状态的选项。第一个选项是一个调用进程外会话状态服务器的会话状态提供程序。第二个选项是一个在Microsoft SQL Server数据库中存储数据的会话状态提供程序。

由于这两个选项均在 Web 应用程序的工作进程之外存储状态信息,因此在将会话状态发送至远程存储器之前,必须对其进行序列化。如果会话状态中保存了大量数据,序列化数据的大小可能变得很大。

ASP.NET 4 针对这两种类型的进程外会话状态提供程序引入了一个新的压缩选项。使用此选项,在 Web 服务器上有多余 CPU 周期的应用程序可以大大缩减序列化会话状态数据的大小。

可以使用配置文件中 sessionState 元素的新增加的 compressionEnabled 属性设置此选项。当 compressionEnabled 配置选项设置为 true 时,ASP.NET 使用 .NET Framework GZipStream类对序列化会话状态进行压缩和解压缩。下面的示例演示如何设置该特性。

  1. <sessionState
  2. mode="SqlServer"
  3. sqlConnectionString="data source=dbserver;Initial Catalog=aspnetstate"
  4. allowCustomSqlDatabase="true"
  5. compressionEnabled="true"
  6. />

转载于:https://blog.51cto.com/hduxzhz/392281

ASP.NET 4新增功能(一) ASP.NET核心服务相关推荐

  1. ASP.NET 4新增功能(三) 对Web标准的支持和辅助功能的增强

    ASP.NET 控件的早期版本有时会呈现不符合 HTML.XHTML 或辅助功能标准的标记.ASP.NET 4 消除了其中大部分异常情况. 1.用于可禁用控件的 CSS 在 ASP.NET 3.5 中 ...

  2. ASP.NET Core 5.0新增功能摘要

    .NET5.0发布了大半个月,从.NET Core3.1的平滑迁移体验令人心旷神怡,改个targetframework就完成迁移,不要太轻松!然而,ASP.NET Core5.0也有很多有意思的改变, ...

  3. IIS6.0下ASP的新增功能

    ASP 的新增功能 除了内部性能增强和优化外,该版本的 Active Server Pages(ASP) 还具有如下新功能: 更好的国际化和 UTF-8 支持 改进的 POST 支持 ASP 挂起检测 ...

  4. 评论回复功能 asp.net_一键抠图 更快 更强!六月新版 PS 2020 21.2 新增功能测试报告...

    一键抠图 更快 更强!六月新版 PS 2020 21.2 新增功能测试报告! 紫枫前几天发布了 Adobe Photoshop 2020 21.2.0.225 最新版本,今天来说说这个版本的新增功能. ...

  5. asp实现UNIX时间戳功能

    asp实现UNIX时间戳功能 utime  = DateDiff("s", "1970-1-1 8:00:00", Now()) 注:为什么不是"19 ...

  6. ASP.NET中常用功能代码总结(3)——上传图片到数据库

    ASP.NET中常用功能代码总结(3)--上传图片到数据库<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:offi ...

  7. ASP.NET MVC:缓存功能的设计及问题

    ASP.NET MVC:缓存功能的设计及问题 这是非常详尽的asp.net mvc中的outputcache 的使用文章. [原文:陈希章 http://www.cnblogs.com/chenxiz ...

  8. php 实现application,PHP中实现ASP中的Application 功能

    [PHP中实现ASP中的Application 功能] /* 作者: 何志强[hzq@chinaasp.com hhzqq@21cn.com] 主页: http://www.phpchina.com/ ...

  9. ASP.NET中常用功能代码总结(1)——发送邮件篇

    ASP.NET中常用功能代码总结(1)--发送邮件篇<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office: ...

  10. php和asp渲染页面,Vue.js与 ASP.NET Core 服务端渲染功能

    在前端使用 Vue.js,Vue 服务端渲染直到第二个版本才被支持. 在本例中,我想展示如何将 Vue.js 服务端渲染功能整合 ASP.NET Core. 我们在服务端使用了 Microsoft.A ...

最新文章

  1. 计算机和人类“看”法不同,但这重要么?
  2. Excel中去掉单元格中间的空格
  3. 获取mysql所有用户权限_python 获取mysql数据库列表以及用户权限
  4. android o preview 3,Android O Preview 之 通知渠道(Notification Channels)
  5. 经典C语言程序100例之三八
  6. SpringMVC的数据响应
  7. CAP 发布 5.0 版本正式发布
  8. POJ 3624 Charm Bracelet 0-1背包
  9. HTML5+CSS+JQuery 实现简单的进度条功能
  10. Permutations II
  11. 团队软件库_深情软件库App最新版下载_深情软件库手机版2021下载
  12. SpringMvc-HandlerMapping/RequestCondition
  13. ps 毛发 边缘_用PS给老旧黑白照片上色,亲妈级教学,简单实用,轻松搞定!
  14. 深入了解VB中的变量和指针
  15. stm32f103+znfat+ch375+vs1003实现简单mp3播放器功能
  16. Linux下的好用的图片压缩软件
  17. std在汇编语言是什么指令_汇编语言STD CLD的用法
  18. MySQL在线DDL gh-ost使用说明
  19. 第三方平台可以通过微信公众平台素材管理接口实现同步了
  20. 那天我和小姐姐扯了半小时的JVM~

热门文章

  1. HTML 5 span 标签
  2. Centos允许root远程登录设置
  3. android-常用布局-三
  4. Json for the .NET Compact Framework
  5. SQL 数据库开发一些精典的代码(转永南)
  6. 使用Homebrew安装Git与Github在idea中的配置
  7. ElasticSearch6.0 Java API 使用 排序,分组 ,创建索引,添加索引数据,打分等(一)...
  8. SqlAlchemy ORM
  9. 如何设计自动化测试的代码结构
  10. java调优随记-java对象大小