共用方式為


在 SharePoint Server 中設定物件快取使用者帳戶

適用於:yes-img-132013 yes-img-16 2016yes-img-19 2019yes-img-seSubscription Edition no-img-sopSharePoint in Microsoft 365

物件快取會在 SharePoint Server 中儲存項目的相關屬性。 發佈功能在呈現網頁時,會使用此快取中的項目。 物件快取的目標是要減少 SQL Server 執行所在電腦的負載,以及改進要求的延遲和輸送量。 物件快取會讓其查詢成為兩個現成可用的使用者帳戶之一:入口網站進階使用者和入口網站進階讀者。 您必須正確設定這些使用者帳戶,以確保物件快取能正常運作。 入口網站進階使用者帳戶必須是具有 Web 應用程式完整控制存取權的帳戶。 入口網站進階讀者帳戶則必須是具有 Web 應用程式完整讀取存取權的帳戶。

重要事項

入口網站進階使用者和入口網站進階讀者帳戶必須是不同帳戶,且不能是將會用來登入網站的帳戶。

本文會說明為何您必須設定這些物件快取使用者帳戶,並說明如何設定這些帳戶。 如需物件快取的相關資訊,請參閱 SharePoint Server 中的快取設定作業

在 SharePoint Server 中,項目的查詢會與執行查詢的使用者帳戶連結。 發佈功能的各個部分會執行查詢,查詢的結果則會快取至物件快取中。 系統會根據執行查詢的使用者來快取這些結果。 為了獲得最佳的快取命中率和記憶體需求,查詢的執行依據必須是使用者是否可以查看草稿項目。 當發佈控制項要求物件快取執行查詢來取得控制項的資料時,快取會執行查詢,但不會以提出要求的使用者身分來執行,而是會執行查詢兩次:一次以入口網站進階使用者帳戶的身分執行,一次以入口網站進階讀者帳戶的身分執行。 這兩個查詢的結果會儲存在物件快取中。 入口網站進階使用者帳戶的結果中會包含草稿項目,入口網站進階讀者帳戶的結果則只會包含已發佈的項目。 物件快取接著便會檢查存取控制清單 (ACL) 來找出起始要求的使用者,然後根據該使用者是否能查看草稿項目來對該使用者傳回適當的結果。 藉由在 Web 應用程式內新增入口網站進階使用者和入口網站進階讀者帳戶,快取便只須為兩個使用者儲存結果。 這種做法會增加查詢的傳回結果數量,並減少儲存快取所需的記憶體數量。

根據預設,入口網站進階使用者帳戶是網站的系統帳戶,入口網站進階讀者帳戶則是 NT Authority\Local Service。 使用現成可用的帳戶有兩個主要問題。

  1. 第一個問題是,某些項目會簽出到系統帳戶,因此在執行包含這些項目的查詢時,所傳回的會是簽出版本的項目,而不是最新發佈的版本。 會造成問題的原因是,這並非使用者預期會傳回的項目,因此快取必須執行第二次查詢才能擷取正確版本的檔案。 對於每個包含這些項目的要求,這會讓伺服器效能受到負面影響。 如果使用者的帳戶已設定為入口網站進階使用者帳戶,則已簽出項目的使用者也會發生同樣的問題。 這個原因導致我們不應該讓設定為入口網站進階使用者和入口網站進階讀者的帳戶,成為用來登入網站的使用者帳戶。 這樣才能確保使用者不會不小心地簽出項目,而造成效能問題。

  2. 預設的入口網站進階讀者帳戶是 NT Authority\Local Service,此帳戶無法在宣告驗證應用程式中獲得正確解析。 因此,如果未將入口網站進階讀者帳戶明確設定為供宣告驗證應用程式使用,則瀏覽至此應用程式下的網站集合時,會導致「拒絕存取」錯誤,即使是網站系統管理員也一樣。 任何網站只要所使用的功能會明確使用物件快取 (例如,SharePoint Server 發佈基礎結構、中繼資料瀏覽、內容查詢網頁組件或瀏覽),就會發生此錯誤。

使用管理中心和 Windows PowerShell 來設定物件快取使用者帳戶

您可以透過 SharePoint 管理中心網站和 Microsoft PowerShell 來設定物件快取的使用者帳戶。 您必須先在管理中心內建立帳戶,然後再使用 PowerShell 將帳戶新增到 Web 應用程式。 您必須將使用者帳戶新增到每個 Web 應用程式。

注意

此程序結束時,您必須重設 Internet Information Services (IIS) 以將變更套用到 Web 應用程式。 執行此程序時,請務必選擇可讓網站的連線使用者中斷時間最少的時候。 如需 IISReset 的詳細資訊,請參閱 IIS 重設活動

使用管理中心來建立使用者帳戶

  1. 確認執行此程序的使用者帳戶為 SharePoint 管理中心網站執行所在電腦上的伺服器陣列管理員群組成員。

  2. 在管理中心的 [應用程式管理] 區段中,按一下 [管理 Web 應用程式],然後按一下所要設定 Web 應用程式的名稱。

  3. 在 [Web 應用程式] 索引標籤上的 [原則] 群組中,按一下 [使用者原則]

  4. 在 [Web 應用程式原則] 視窗中,按一下 [新增使用者]

  5. 從 [區域] 清單中選取 [所有區域],然後按 [下一步]

  6. 在 [使用者] 方塊中,輸入入口網站進階使用者帳戶的使用者名稱,然後按一下 [檢查名稱] 以確保應用程式伺服器上的驗證提供者可以解析該帳戶名稱。

  7. 在 [選擇權限] 區段中,核取 [完全控制 - 具有完全控制權限] 方塊,然後按一下 [完成]

  8. 針對入口網站進階讀者帳戶重複步驟 5 到 7。

  9. 在 [選擇權限] 區段中,核取 [完全讀取 - 具有完整唯讀權限] 方塊。

  10. 按一下 [完成]

  11. 記下物件快取進階讀者和物件快取進階使用者帳戶的名稱在 [使用者名稱] 資料行的顯示方式。 根據您是否對 Web 應用程式使用宣告驗證,所顯示的字串會不同。

使用 Microsoft PowerShell 將使用者帳戶新增到 Web 應用程式

  1. 確認您具備下列成員身分:
  • SQL Server 執行個體上的 securityadmin 固定伺服器角色。

  • 所有要更新之資料庫上的 db_owner 固定資料庫角色。

  • 正在執行 PowerShell Cmdlet 之所在伺服器上的系統管理員群組。

  • 請以高於上述基本要求新增必要的成員資格。

    系統管理員可以使用 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。

    注意事項

    您可以使用不同的檔案名稱,但是必須將檔案儲存為副檔名為 .ps1 的 ANSI 編碼文字檔。

  2. 關閉文字編輯器。

  3. 啟動 SharePoint 管理命令介面

  4. 變更至您儲存檔案的目錄。

  5. 在 PowerShell 命令提示字元中,輸入下列命令:./SetUsers.ps1

  6. 重設 Internet Information Services (IIS)。 如需 IISReset 的詳細資訊,請參閱啟動或停止網頁伺服器 (IIS 8)

另請參閱

概念

SharePoint Server 中的快取設定作業