ASP.NET 视图状态是一项内置功能,它通过在客户端请求的完整往返之间保留页面和控件的值来管理客户端状态。这使得即使在 HTTP 等无状态协议上,也能实现有状态的编程能力。
此状态以 Base64 编码字符串的形式存储在页面的隐藏字段中,作为发送给客户端的每个响应的一部分。客户端会将其作为回发的一部分返回给服务器。
<input id = "__VIEWSTATE"
type = "hidden"
name = "__VIEWSTATE"
value = "/wEPDwUJNzg0MDMxMDA1D2QWAmYPZBYCZg9kFgQCAQ9kFgICBQ9kFgJmD2QWAgIBD
xYCHhNQcm2aW91c0NvbnRyb2xNb2RlCymIAU1pY3Jvc29mdC5TaGFyZVBvaW50Lld
lYkNvbnRyb2xzLlNQQ29udHJbE1vZDA1XzRlMjJfODM3Y19kOWQ1ZTc2YmY1M2IPD
2...=="/>
虽然 ASP.NET 视图状态非常有用,但它也存在一些需要解决的问题。这些问题将在下文中讨论。
解决这些 ASP.NET 视图状态问题的一种方法是存储实际的视图状态。 ASP.NET 视图状态 在 Web 服务器上,它会向浏览器发送一个唯一的令牌(或 ID)。这样,浏览器下次就可以将此令牌发送回 Web 服务器。然后,Web 服务器使用此令牌在其存储中查找正确的 ASP.NET 视图状态。以下是一个令牌使用示例。
<input type = "hidden"
name = "__VIEWSTATE"
id = "__VIEWSTATE"
value = "vs:cf8c8d3927ad4c1a84da7f891bb89185" />
虽然 ASP.NET 视图状态可以存储在 Web 服务器上,但当 ASP.NET 应用程序运行在负载均衡的 Web 服务器集群中时,这种做法并不理想,因为下一个 HTTP 请求可能会发送到另一个 Web 服务器。因此,必须将 ASP.NET 视图状态存储在所有 Web 服务器均可访问的共享存储库中。
在服务器上存储 ASP.NET 视图状态的最佳位置是…… 分布式缓存. 这样,您不仅可以为所有 Web 服务器拥有一个公共存储,而且您还可以拥有一个极其 快速且可扩展的内存存储 与 SQL Server 数据库或其他存储选项相比。
NCache 是一个适用于 .NET、Java、Python 和 Node.js 的极速且可扩展的分布式缓存。它还允许您存储 ASP.NET 视图状态 来解决上述问题。
要配置 ASP.NET 视图状态,您需要安装 AspNet.ViewState。NCache NuGet软件包 作为先决条件。然后您需要配置 应用浏览器 文件 NCache 插入页面适配器。接下来,您需要 配置 web.config 文件 在您的应用程序中注册视图状态以进行配置,并指定先前注册的配置部分的设置。请参阅 NCache ASP.NET 视图状态文档 用于逐步配置。
如果相同的缓存用于视图状态缓存和其他数据,您可以 获取视图状态数据 通过使用 NC_ASP.net_viewstate_data 标签:
Hashtable allViewStateData = cache.SearchService.GetByTag(new Tag("NC_ASP.net_viewstate_data"));
通过缓存 ASP.NET 视图状态,您可以获得以下好处: NCache.
NCache 它提供了一套丰富的功能,用于缓存和管理 ASP.NET 视图状态。以下是这些功能的列表。
如您所见, NCache 它允许您在服务器端缓存 ASP.NET 视图状态,从而优化 ASP.NET 的性能。它还提供了一套丰富的功能,用于更高效地管理缓存中的 ASP.NET 视图状态。这使您可以开发复杂的应用程序,并利用这些功能来应对各种不同的场景。