更多来自Google的 ASP.NET 今天的应用程序流量很大,有数以万计的用户使用。 这些应用程序面临性能问题,因为访问数据库很慢,尤其是在网络流量很高的时候。 随着成千上万的用户访问这些应用程序,这种延迟现在变得难以承受。
为了解决这个性能限制,ASP.NET 和 ASP.NET Core 提供了一种称为“ASP.NET Cache”的内置缓存机制,将应用程序数据存储在内存中以便更快地访问并减少数据库访问。 从而提高应用程序的性能。
NCache 更多信息 ASP .NET 性能 .NET Core
内置 ASP.NET 缓存有局限性
但是,内置的 ASP.NET 缓存是一个独立的进程内缓存,存在于 ASP.NET 应用程序的工作进程中,这是一个问题。 因此,它仅对单个服务器环境有用。
以下是 ASP.NET 缓存的一些限制:
- 多个缓存实例未同步: 由于 ASP.NET 缓存是 ASP.NET 应用程序进程的一部分,因此它不允许同步运行在多个 ASP.NET 应用程序上的缓存实例。 这会导致数据完整性问题。
- NET 工作进程回收: 由于 ASP.NET 缓存是在进程中的,因此当 ASP.NET 工作进程被回收时,所有缓存的数据都会丢失。 然后需要从数据源重新加载缓存,从而对性能造成很大影响。
- 有限的工作进程内存大小: ASP.NET 缓存是 ASP.NET 应用程序工作进程的一部分。 因此,此进程用于缓存的内存有限。
解决方案:使用分布式缓存的 ASP.NET 缓存
为了应对 ASP.NET 缓存的这些限制,您需要一个分布式缓存,例如 NCache 它存在于多个服务器上的自己的进程中,并且还提供了一种机制来同步网络场中的缓存。
这是分布式缓存的方式,例如 NCache 解决您的 ASP.NET 缓存问题:
- 分布式缓存同步由多个 ASP.NET 应用程序实例创建的所有缓存实例,从而解决您的数据完整性问题。
- 由于它是一个out-proc(进程外)缓存,它可以被多个服务器和工作进程共享。
- 由于没有进程限制,高可扩展性允许您使用尽可能多的内存。 它还允许您拥有任意数量的缓存服务器。
- 您可以实时扩展 ASP.NET 应用程序缓存服务器。
- NCache 还具有高度智能的数据复制系统,没有任何性能问题。 高效的数据复制功能让您放心,不会出现任何数据丢失问题。
NCache 更多信息 ASP .NET 性能 ASP.NET Core 性能
如何将 ASP.NET 缓存与分布式缓存一起使用?
NCache 提供不同类型的缓存,您可以使用它们来获取您的 ASP.NET 应用程序启动并运行缓存。
应用数据缓存
可以使用数据缓存将需要经常从数据源中获取的应用数据缓存在 ASP.NET 应用程序中,以减少对这些频繁访问的数据的响应时间。 这包括您的自定义对象数据,例如 Product 类对象,如下例所示。 Product 对象第一次从数据库中取出,然后添加到缓存中,下次访问数据时再从缓存中取出。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
using Alachisoft.NCache.Client; ... ICache _cache = CacheManager.GetCache("demoCache"); string key = "Product:1001"; // Search for key in cache var result = _cache.Get<string>(key); // If it doesn't exist, fetch from DB and add to cache if (result == null) { var product = LoadProductFromDB(1001); CacheItem item = new CacheItem(product); _cache.Add(key, item); } |
NCache 更多信息 ASP.NET 缓存 ASP.NET Core 会议
ASP.NET 会话状态缓存
您可以使用 会话缓存 为您的 ASP.NET 应用程序存储用户相关数据。 会话数据属于 ASP.NET 应用程序上的用户交互。 例如,如果 ASP.NET 缓存出现故障,电子商务企业无法承受丢失会话的后果。 因此,您可以插入 NCache 到您的 ASP.NET 应用程序以防止数据丢失。
使用 NCache 对于 ASP.NET 缓存,您无需进行任何编程工作。 只需将以下配置添加到 网页配置 您的应用程序:
1 2 3 4 5 6 7 8 9 |
... <assemblies> <add assembly ="Alachisoft.NCache.SessionStoreProvider, Version=x.x.x.x, Culture=neutral, PublicKeyToken=CFF5926ED6A53769"/> </assemblies> ... |
修改会话状态配置以在 ASP.NET 中启用会话状态缓存。 在 web.config中 添加以下部分:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
<configuration> ... <sessionState cookieless="false" regenerateExpiredSessionId="true" mode="Custom" customProvider="NCacheSessionProvider" timeout="20"> <providers> <add name="NCacheSessionProvider" type="Alachisoft.NCache.Web.SessionState.NSessionStoreProvider" cacheName="demoCache" sessionAppId="NCacheApp" exceptionsEnabled="true" writeExceptionsToEventLog="false" enableLogs="false" enableSessionLocking="true" sessionLockingRetry="-1" emptySessionWhenLocked="false" /> </providers> </sessionState> ... </configuration> ... |
NCache 更多信息 ASP.NET 会话缓存 ASP.NET 会话缓存文档
ASP.NET View State 高速缓存
ASP.NET View State 提供客户端状态管理机制。 它有助于在客户端请求的完整往返之间保留页面和控件值。 你可以存储 ASP.NET view state 在 Web 服务器上并将唯一 ID 发送回浏览器。 这个ID会找到正确的 ASP.NET view state 在缓存中。
实现 ASP.NET view state 缓存在 NCache 很容易。 这是需要添加的部分配置 网页配置 您的 ASP.NET 应用程序:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
... <ncContentOptimization> <settings viewstateThreshold="12" enableViewstateCaching="true" enableTrace="false" groupedViewStateWithSessions="false" maxViewStatesPerSession="5" > <cacheSettings cacheName="demoCache"> <expiration type="None" duration="100" /> </cacheSettings> </settings> </ncContentOptimization> ... |
NCache 更多信息 ASP.NET View State 高速缓存 NCache 配套文档
ASP.NET 输出缓存
对于经常访问的网页,您可以使用 输出缓存 以改善这些特定页面的响应时间。 ASP.NET 的输出缓存系统根据查询字符串参数和浏览器类型等各种参数缓存不同版本的页面内容。
您可以启用输出缓存 NCache 在您的 ASP.NET 应用程序中,无需任何代码更改,只需将以下内容插入 网页配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
... <caching> <outputCache defaultProvider ="NOutputCacheProvider"> <providers> <add name="NOutputCacheProvider" type= "Alachisoft.NCache.OutputCacheProvider.NOutputCacheProvider, Alachisoft.NCache.OutputCacheProvider, Version=x.x.x.x, Culture=neutral, PublicKeyToken=cff5926ed6a53769" cacheName="demoCache" exceptionsEnabled="true"enableDetailLogs="false" enableLogs="true" writeExceptionsToEventLog="true"/>" </providers> </outputCache> </caching> ... |
NCache 更多信息 NCache 输出缓存文档 ASP.NET 输出缓存
结论
总结一下,分布式缓存就像 NCache 具有高度可扩展性、可靠性和性能优化,可处理 ASP.NET 中的缓存。 它具有克服 ASP.NET 缓存的所有限制的所有必要功能,并且是唯一可以自行处理 ASP.NET 缓存而无需您担心的分布式缓存。 提供所有类型的缓存 NCache,通过确保性能提升,您可以轻松缓存应用程序所需的任何类型的数据。
很好的文章,罗恩。 详细解释了 ASP.NET 缓存。 分布式缓存 NCache 是可靠的,并为 ASP.NET 提供了更好的性能。 它有助于克服 ASP.NET 缓存的限制。 这篇文章清晰地描述了分布式缓存是如何完成的。