在 SharePoint Server 中配置对象缓存用户帐户

适用于:yes-img-132013 yes-img-162016 yes-img-192019 yes-img-seSubscription Edition no-img-sopSharePoint in Microsoft 365

对象缓存在 SharePoint Server 中存储有关项的属性。 在呈现网页时发布功能将使用此缓存中的项目。 对象缓存的目标是减少运行 SQL Server 的计算机的负载,并改进请求延迟和吞吐量。 对象缓存作为两个现有用户帐户(Portal Super User 和 Portal Super Reader)中的一个帐户创建查询。 必须合理地配置这些用户帐户以确保对象缓存正确工作。 Portal Super User 帐户必须拥有对 Web 应用程序的完全控制权限。 Portal Super Reader 帐户必须拥有对 Web 应用程序的完全读取权限。

重要

Portal Super User 和 Portal Super Reader 帐户必须是独立的帐户并且不能用来登录网站。

本文介绍了为何必须配置这些对象缓存用户帐户,并介绍如何配置这些帐户。 有关对象缓存的信息,请参阅 SharePoint Server 中的缓存设置操作

在 SharePoint Server 中,查询项与进行查询的用户帐户相关联。 发布功能的各种部件将查询对象缓存中缓存的结果。 将根据用户的查询操作缓存这些结果。 要优化缓存命中率和内存要求,查询必须基于用户是否能够看到草稿项目。 当发布控件请求对象缓存创建查询以获取控件的数据时,缓存将创建查询,但不是作为用户来创建请求,而是会创建两次查询:一次作为 Portal Super User 帐户,一次作为 Portal Super Reader 帐户。 这两个查询的结果将存储在对象缓存中。 Portal Super User 帐户的结果包括草稿项目,而 Portal Super Reader 帐户的结果则仅包括已发布的项目。 然后,对象缓存将检查发出请求的用户的访问控制列表 (ACL) 并根据用户是否能看到草稿项目,将适当的结果返回给用户。 通过向 Web 应用程序添加 Portal Super User 和 Portal Super Reader 帐户,缓存必须仅为这两个用户存储结果。 这将增加为查询返回的结果数并减少存储缓存所需的内存量。

默认情况下,Portal Super User 帐户是网站的系统帐户,Portal Super Reader 帐户是 NT Authority\Local Service。 使用现有帐户存在两个主要问题。

  1. 第一个问题是某些项目会检出系统帐户,因此在创建包含这些项目的查询时,将返回项目的检出版本而不是最新的发布版本。 由于这并非是用户预期返回的结果,这便构成了一个问题,因此缓存必须创建第二次查询以获取文件的正确版本。 这将对包括这些项目在内的所有请求的服务器性能造成负面影响。 对于任何已检出项目的用户,如果其帐户设置为 Portal Super User 帐户,则他们都会遇到相同的问题。 这也是为什么配置为 Portal Super User 和 Portal Super Reader 的帐户不能用作登录网站的用户帐户。 因为这样可以确保用户不会意外地检出项目并引发性能问题。

  2. 默认的 Portal Super Reader 帐户是 NT Authority\Local 服务,它无法在声明身份验证应用程序中得到正确地解析。 因此,如果没有为声明身份验证请求显式地配置 Portal Super Reader 帐户,浏览到此应用程序下的网站集将导致"拒绝访问"错误,即使请求者是网站管理员。 此错误会在任何网站上发生,只要该网站使用了任何显式使用对象缓存的功能,例如 SharePoint Server 发布基础结构、元数据导航、内容查询 Web 部件或导航。

使用管理中心和 Windows PowerShell 配置对象缓存用户帐户

可以通过 SharePoint 管理中心网站和 Microsoft PowerShell 为对象缓存配置用户帐户。 必须先在管理中心创建帐户,然后使用 PowerShell 将这些帐户添加到 Web 应用程序。 您必须将用户帐户添加到每个 Web 应用程序。

警告

在此步骤的最后,必须重置 Internet Information Services (IIS) 以将更改应用到 Web 应用程序。 确保在用户连接到网站的中断次数最少时,执行此步骤。 有关 IISReset 的更多信息,请参见 IIS 重置活动

使用管理中心创建用户帐户

  1. 验证执行此步骤的用户帐户是 Farm Administrators 组(该组位于运行 SharePoint 管理中心网站的计算机上)的成员。

  2. 在管理中心的“ 应用程序管理 ”部分中,单击“ 管理 Web 应用程序”,然后单击要配置的 Web 应用程序的名称。

  3. 在"Web 应用程序"选项卡上的"策略"组中,单击"用户策略"。

  4. 在"Web 应用程序的策略"窗口中,单击"添加用户"。

  5. 从"区域"列表选择"所有区域",然后单击"下一步"。

  6. 在“ 用户 ”框中,键入门户超级用户帐户的用户名,然后单击“ 检查名称 ”,确保应用程序服务器上的身份验证提供程序可以解析帐户名称。

  7. “选择权限” 部分中,选中“ 完全控制 - 具有完全控制” 框,然后单击“ 完成”。

  8. 对门户超级读者帐户重复步骤 5 到 7。

  9. 在"选择权限"部分中,选中"完全控制 - 具有完全只读访问"框。

  10. 单击"完成"。

  11. 记录 Object Cache Super Reader 和 Object Cache Super User 帐户的名称在"用户列"内的显示方式。 根据您是否正在使用 Web 应用程序的声明身份验证,显示的字符串会有所不同。

使用 Microsoft PowerShell 将用户帐户添加到 Web 应用程序

  1. 确认您具有以下成员身份:
  • SQL Server 实例上的 securityadmin 固定服务器角色。

  • 要更新的所有数据库上的 db_owner 固定数据库角色。

  • 运行 PowerShell cmdlet 的服务器上的 Administrators 组。

  • 添加至少具有以上最小权限的成员。

    管理员可以使用 Add-SPShellAdmin cmdlet 授予使用 SharePoint Server cmdlet 的权限。

    注意

    [!注意] 如果您不具有这些权限,请联系您的安装管理员或 SQL Server 管理员来请求权限。 有关 PowerShell 权限的更多信息,请参阅权限和 Add-SPShellAdmin

  1. 将以下代码粘贴到文本编辑器(如记事本)中:
$wa = Get-SPWebApplication -Identity "<WebApplication>"
$wa.Properties["portalsuperuseraccount"] = "<SuperUser>"
$wa.Properties["portalsuperreaderaccount"] = "<SuperReader>"
$wa.Update()
  1. 使用值替换以下占位符:
  • <WebApplication> 是指将添加帐户的 Web 应用程序的名称。

  • <SuperUser> 是用于门户超级用户帐户的帐户,在前面过程的步骤 11 中提到的 “用户名” 列中显示。

  • <SuperReader> 是用于门户超级读取者帐户的帐户,在前面过程的步骤 11 中提到的 “用户名” 列中显示该帐户。

  1. 保存文件,将其命名为 SetUsers.ps1。

    注意

    您可以使用其他文件名,但您必须将 ANSI 编码的文件另存为使用 .ps1 扩展名的文本文件。

  2. 关闭文本编辑器。

  3. 打开“SharePoint 命令行管理程序”

  4. 转到保存该文件的目录。

  5. 在 PowerShell 命令提示符处,键入以下命令:./SetUsers.ps1

  6. 重置 Internet Information Services (IIS)。 有关 IISReset 的详细信息,请参阅 启动或停止 Web 服务器 (IIS 8)

另请参阅

概念

Cache settings operations in SharePoint Server