ASP.NET 输出缓存是 Microsoft 提供的一种机制,它允许您保留 ASP.NET 页面呈现内容的内存副本。 因此,ASP.NET 可以从内存中缓存的副本中为该页面的后续用户请求提供服务,而不是重新执行该页面,这可能由于繁重的数据库调用而变得非常昂贵。
因此,ASP.NET 输出缓存不仅可以提高您的应用程序性能,还可以减少昂贵的数据库访问。 这提高了 ASP.NET 应用程序的可伸缩性,否则,如果所有这些 ASP.NET 页面一次又一次地执行,数据库将成为可伸缩性瓶颈。
但是,ASP.NET 输出缓存驻留在您的 ASP.NET 工作进程地址空间中,工作进程在该地址空间中非常频繁地重置或回收。 发生这种情况时,所有 ASP.NET 输出缓存都将丢失。 其次,在网络花园的情况下,相同的页面输出被多次缓存,每个工作进程中一次会消耗大量额外的内存。
NCache 更多信息 NCache 配套文档 ASP.NET 输出缓存
也可以参考: Microsoft Azure 中的 ASP.NET 输出缓存以提高性能
运用 NCache 作为 ASP.NET 输出缓存的分布式缓存
为了克服 ASP.NET 输出缓存的这些限制, NCache 已经实现了一个 ASP.NET 输出缓存提供程序,以启用在进程外缓存而不是工作进程地址空间中缓存 ASP.NET 呈现的输出。 这样,您呈现的 ASP.NET 页面的输出可用于 Web 场中的所有其他 Web 服务器,甚至无需在每个工作进程中本地呈现相同的 ASP.NET 页面。
通过使用 NCache 作为 ASP.NET 输出缓存提供程序 您不仅可以在 out-proc 缓存中缓存更多数据,还可以显着减少数据库的负载。 这是因为 Web 场中的所有 Web 服务器都可以访问每个呈现的 ASP.NET 页面输出,而无需在每个工作进程中执行页面呈现过程,这涉及昂贵的数据库访问。
此外, NCache 使您甚至可以灵活地缓存 ASP.NET 页面的某些部分的输出,而不是整个页面。 这种方法在您希望每次都呈现 ASP.NET 的某些部分的情况下非常有用。 此外, NCache 还为您提供高可用性,因为即使您的工作进程重置或回收,您的数据也不会丢失,因为它不属于您的工作进程地址空间并且驻留在单独的缓存服务器上。
配置步骤 NCache 输出缓存提供程序
步骤:1 注册 NCache 作为 ASP.NET 输出缓存提供程序
修改 ASP.NET 应用程序的 web.config 以进行注册 NCache 输出缓存提供程序如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<caching> <outputcache defaultprovider="NOutputCacheProvider"> <providers> <add name="NOutputCacheProvider" type="NCOutputCache.NOutputCacheProvider" exceptionsenabled="true" enablelogs="false" cachename="mypartitionofReplicaCache"> </add></providers> </outputcache> </caching> <compilation debug="true" targetframework="4.0"> <assemblies> <add assembly="Alachisoft.NCache.OutputCache, Version=4.1.0.0, Culture=neutral"> </add></assemblies> </compilation> |
步骤:2 添加 ASP.NET 输出缓存标记
将下面提到的输出缓存标记添加到要缓存其输出的页面。
1 2 |
<%@ OutputCache VaryByParam="ID" Duration="300" %> |
此外,早于 ASP.NET 4.0 的 ASP.NET 版本不提供对自定义 ASP.NET 输出缓存提供程序的支持。 因此,为了支持所有早期版本的 ASP.NET, NCache 还使用 HttpModule 实现了另一个版本的 ASP.NET 输出缓存提供程序。 这个基于 ASP.NET 输出缓存提供程序的 HttpModule 由 NCache 使您能够使用分布式缓存来存储呈现的 ASP.NET 页面输出,即使您的应用程序使用的是早于 4.0 的 ASP.NET 版本。
结论
总之,通过使用 NCache 输出缓存提供程序可以轻松提高 ASP.NET 应用程序响应时间并减少数据库负载。 所以,准备好你的装备并开始使用 NCache 获得更快、更可靠的体验!
设置 conf 以包含本地化档案的位置。 由内部 DistributedCache 代码使用。