查看 ASP.NET 性能优化的状态缓存

ASP.NET View State 是 ASP.NET 的一个强大功能,它提供了客户端状态管理机制。 它有助于在客户端请求的完整往返之间保留页面和控件值。 这为状态提供了通过 HTTP 等无状态协议的完整编程能力。

ASP.NET View State 作为编码的 Base64 字符串存储在页面上的隐藏字段中,作为发送到客户端的每个响应的一部分,并且还作为回发的一部分由客户端返回到服务器。

<input id = "__VIEWSTATE"
       type = "hidden"
       name = "__VIEWSTATE"
       value = "/wEPDwUJNzg0MDMxMDA1D2QWAmYPZBYCZg9kFgQCAQ9kFgICBQ9kFgJmD2QWAgIBD
              xYCHhNQcm2aW91c0NvbnRyb2xNb2RlCymIAU1pY3Jvc29mdC5TaGFyZVBvaW50Lld
              lYkNvbnRyb2xzLlNQQ29udHJbE1vZDA1XzRlMjJfODM3Y19kOWQ1ZTc2YmY1M2IPD
              2…=="/>

虽然很有用, ASP.NET View State 确实带来了一些您需要了解和解决的问题。 它们将在下面讨论。

  1. ASP.NET View State 往往很重: 当您的 ASP.NET 应用程序在其页面上有大量丰富而繁重的控件和小部件时,大量数据在您的浏览器和 Web 服务器之间来回传输。 这种沉重的负载会导致 ASP.NET 应用程序的性能下降和高带宽成本。
  2. ASP.NET View State 是一个安全风险: 当将机密数据作为视图状态的一部分发送给客户端时,它也可能带来安全风险。 这些数据很容易受到攻击,并且可以被攻击者削弱,这是一个严重的安全威胁。 你可以加密 ASP.NET View State 数据,但这又会带来性能成本。

NCache ASP.NET View State

您可以解决的一种方法 ASP.NET View State 问题是通过存储实际 ASP.NET View State 在 Web 服务器上,并向浏览器发送一个唯一的令牌(或 ID)来代替它,以便浏览器下次可以将此令牌发送回 Web 服务器。 然后,Web 服务器使用此令牌找到正确的 ASP.NET View State 在它的商店里。 下面是一个使用令牌代替的示例 ASP.NET View State.

<input type = "hidden"
       name = "__VIEWSTATE"
       id = "__VIEWSTATE"
       value = "vs:cf8c8d3927ad4c1a84da7f891bb89185" />

尽管 ASP.NET View State 可以存储在 Web 服务器上,但当您的 ASP.NET 应用程序在负载平衡的 Web 场中运行时,它并不理想,因为下一个 HTTP 请求可能会到达另一个 Web 服务器。 因此,您必须存储 ASP.NET View State 在可从所有 Web 服务器访问的共享存储中。

最好的存放地点 ASP.NET View State 在服务器上 分布式缓存. 这样,您不仅可以为所有 Web 服务器拥有一个公共存储,而且您还可以拥有一个极其 快速且可扩展的内存存储 与 SQL Server 数据库或其他存储选项相比。

分布式缓存存储 ASP.NET View State - NCache
图 1:分布式缓存存储 ASP.NET View State

NCache 是一个非常快速且可扩展的分布式缓存,适用于 .NET/.NET Core、Java 和 Node.js。 它还可以让您存储 ASP.NET View State 来解决上述问题。

在 ASP.NET ViewState 中配置 NCache

配置 ASP.NET View State 你需要安装 AspNet.ViewState。NCache NuGet软件包 作为先决条件。 然后你需要 配置 App_browser 文件 NCache 插入页面适配器和 配置 web.config 文件 在您的应用程序中注册视图状态的配置部分并指定已注册配置部分的设置。 请参阅 NCache ASP.NET View State 文档 用于逐步配置。

如果相同的缓存用于视图状态缓存和其他数据,您可以 获取视图状态数据 通过使用 NC_ASP.net_viewstate_data 标记为:

Hashtable allViewStateData = cache.GetByTag(new Tag("NC_ASP.net_viewstate_data"));

缓存的好处 ASP.NET View State 在服务器上

通过缓存您的 ASP.NET View State in NCache.

  1. 提高 ASP.NET 性能: NCache 减少请求/响应负载,从而提高整体请求时间。
  2. 降低带宽成本: 更小的有效负载还意味着带宽消耗成本的显着降低。这可以为您节省很多钱。
  3. 安全性: 现在, ASP.NET View State 编码字符串不发送到浏览器,不再有任何安全隐患。
  4. 快速且可扩展 ASP.NET View State 存储: NCache 是一个极其快速且可扩展的分布式缓存。这意味着您的 ASP.NET 永远不会面临任何可扩展性瓶颈 ASP.NET View State 存储。
  5. ASP.NET View State 通过复制实现可靠性: NCache 智能复制分布式缓存中的所有数据。这意味着您不会失去任何 ASP.NET View State 即使缓存服务器出现故障。

高级 ASP.NET View State 缓存功能 NCache

NCache 为您提供丰富的缓存和管理功能 ASP.NET View State. 下面是它们的列表。

  1. 最小尺寸阈值: NCache 让您 指定最小尺寸 ASP.NET View State。任何小于此值的视图状态都不会被缓存。这使您能够仅缓存大量视图状态。
  2. 链接 ASP.NET View State 与会话状态: 您还可以 链接一个 ASP.NET View State 与您的会话状态。这样,当用户会话过期时,他的所有视图状态都会自动从缓存中删除。
  3. 页级最大计数阈值: 您可以以 FIFO 方式配置应为给定页面保留多少视图状态。 这样,只要为此页面创建新的视图状态,就会删除最旧的视图状态。 这通过不缓存您永远不需要的视图状态来优化您在缓存服务器中的内存消耗。
  4. 会话级别最大计数阈值: 类似于页面级别,您可以 指定用户会话的最大视图状态计数 以先进先出的方式与 每个会话的最大视图状态数. 这样,每当创建新的视图状态时,都会删除最旧的视图状态。
  5. 页面级和会话级设置: 您可以为每个页面以不同的方式指定所有上述设置,或者使它们对所有会话保持通用。

总结

如您所见, NCache 允许您缓存 ASP.NET View State 在服务器上优化您的 ASP.NET 性能。 此外, NCache 为您提供一组丰富的功能来管理您的 ASP.NET View State 在缓存中更有效。 这使您可以开发复杂的应用程序并使用这些功能来处理各种场景。

接下来做什么?

联系我们

联系电话
©版权所有 Alachisoft 2002 - 版权所有。 NCache 是 Diyatech Corp. 的注册商标。