最佳化 WAN 環境的 BLOB 快取 (SharePoint Server 2010)

 

適用版本: SharePoint Server 2010

上次修改主題的時間: 2016-11-30

本文說明如何在 WAN 環境的 Microsoft SharePoint 2010 產品中,使用 BLOB 快取。

快取通常是改進轉譯管線傳送量的有效方法,也就是從伺服器收到要求開始,一直到開始將回應串流回用戶端電腦的這段時間。雖然這對網站整體效能很重要,不過本節將重點放在快取是因為它與下列各項有關:

  • 伺服器設定在用戶端快取扮演的角色。

  • 控制透過網路從伺服器傳送至用戶端的項目大小。

關於 BLOB 快取

BLOB 快取是 SharePoint Server 2010 發佈功能的專用機制。因此,以共同作業入口網站範本為基礎的公司入口網站,以及以發佈入口網站範本為基礎的網際網路對向網站,最適合採用這種機制。您可以使用 BLOB 快取,為發佈網站清單提供的項目,設定相關的快取指令,例如頁面庫和網站集合圖像。當用戶端電腦的瀏覽器遇到快取指令的時候,它會偵測到自己擷取的項目可以儲存到本機,而且在快取指令到期前,都不用重新要求。對橫跨不同地理位置的環境而言,這點很重要,因為可以降低透過網路要求及傳送的項目數。

開啟 SharePoint Server 2010 的 BLOB 快取後,會發生兩件事情。首先,每次要求可以快取到本機的項目時,SharePoint Server 2010 會搜尋收到要求的網頁伺服器硬碟機,檢查本機是否有該要求項目。如果有,檔案會直接從本機磁碟串流到使用者。如果本機磁碟沒有要求的項目,就會從儲存項目的 SQL 資料庫複製一份,然後將項目傳送給發出要求的使用者。之後,每次要求該項目時,都會直接從網頁伺服器提供,一直到項目的快取值指出該項目已經到期為止。這樣可以降低資料庫伺服器的爭用狀況,以提升伺服器陣列效能。

開啟 BLOB 快取後會發生的另一件事,就是將項目傳送給用戶端時,會在項目上附加可快取性標頭。這個標頭會指示瀏覽器該項目可快取的時間長短。例如,如果圖片的可快取性值為 3 天,在 3 天內重新要求該圖片,瀏覽器就會使用本機快取中儲存的影像複本,不會再次向伺服器要求圖片。

使用 Fiddler 蒐集 BLOB 快取相關資料

測試網站以瞭解快取的項目以及項目的快取方式時,您可以使用一款稱為 Fiddler (可能為英文網頁) (http://www.fiddlertool.com) 的免費偵錯應用程式。以下螢幕擷取畫面中的 Fiddler 是從負責發佈資料的簡易 SharePoint 網站上取得。這個網站使用預設的共同作業入口網站範本建立。該頁面已新增部分其他文字內容,且主版頁面上也已新增多個影像。

Fiddler 工具結果

Fiddler 應用程式包含很多重要資訊。

  • 左方的 # 欄指出瀏覽器總共向伺服器發出 44 個用於呈現頁面的 HTTP 要求。

  • Result 欄顯示從項目要求傳回的 HTTP 結果代碼;結果代碼為 200 表示該項目已經擷取成功。

  • URL 欄指出目前要求的具體項目。

  • Body 欄指出每一個項目的大小。

  • Caching 欄顯示每個項目的相關快取指令。Caching 欄中的資料顯示多個項目有相關快取指令;也就是說,它們的 max-age 屬性大於 0。快取指令是以秒來表示。這表示擷取畫面中的頁面,有好幾個項目設定為可快取 365 天 (1 分鐘 60 秒,1 小時 60 分,1 天 24 小時 = 60x60x24 = 86,400x365 = 31,536,000)。

請注意,含有快取指令的項目全部放在 _layouts 目錄中。它們之所以會有這種快取設定,來自於 _layouts/images 虛擬目錄在 IIS 的設定方式。當您建立新的 Web 應用程式,SharePoint Server 2010 會自動建立數個虛擬目錄而且每一個都對應至網頁伺服器實體磁碟的資料夾中。當它建立 _layouts/images 虛擬目錄的時候,會新增適用於整個目錄的快取指令。以下螢幕擷取畫面顯示 IIS Manager 內嵌式管理單元的目錄設定。

設定常用 HTTP 回應標頭對話方塊

由於這些項目的相關快取指令都不是 0,所以下次要求該頁面時,瀏覽器會使用本機瀏覽器快取中的項目複本,而不是再次向伺服器要求頁面。以下螢幕擷取畫面顯示第二次要求頁面時,擷取到的 Fiddler 畫面。

Fiddler 工具結果

如同 Fiddler 資料所示,要求的項目數目已經從 44 個變成 11 個,大幅減少。還有一個重點值得注意,就是發出的要求數目會因為頁面要求方式而不同。如果您使用瀏覽器的 [重新整理] 按鈕,則可能會再次要求所有的項目,無論本機快取的項目版本是否存在。相反地,如果使用連結或捷徑的方式要求頁面,那麼只會要求未快取的項目。

Fiddler 資料還顯示了另一項資訊,那就是瀏覽器向伺服器要求主版頁面上的其他影像,不過本機快取中早已經有這些影像;304 回應碼指出這種情況。這表示瀏覽器針對項目發出條件式要求。304 回應表示尚未使用用戶端的版本修改伺服器上的版本,所以不需要再次下載影像。即使檔案不是透過網路下載,它仍然會往返伺服器一次,藉此判斷本機存在的是否為最新的版本。在橫跨各個地區的環境中,伺服器往返十分耗費成本。因此,目標便是儘可能降低往返需要。您可以將非零快取指令新增至其餘的每個項目 (不包含伺服器一定傳回的頁面),就可以達到此目的。BLOB 快取功能會新增這個快取指令。

使用 Web.config 設定 BLOB 快取

您可以在要使用快取的 Web 應用程式中使用 Web.config 檔案設定 BLOB 快取。請在文字編輯器 (例如記事本) 開啟 Web.config 檔案,然後搜尋 BlobCache 項目。根據預設值,這個項目是:

<BlobCache location="" path="\.(gif|jpg|jpeg|jpe|jfif|bmp|dib|tif|tiff|ico|png|wdp|hdp|css|js|asf|avi|flv|m4v|mov|mp3|mp4|mpeg|mpg|rm|rmvb|wma|wmv)$" maxSize="10" enabled="false" />

BlobCache 元素使用的屬性,具有下列含義:

  • location    代表儲存快取項目的網頁伺服器硬碟機位置。

  • path   應該快取的檔案類型,其 regex 運算式。

  • maxSize **   **快取可以使用的大小 (GB)。

  • enabled    設定成 true,以啟動 BLOB 快取。

需要下列額外的屬性 (預設值未包括的屬性) 才能在個別項目上設定快取到期值:

  • max-age   該項目應在用戶端電腦上快取的時間 (秒)。

將 max-age 屬性設定成 0 以外的值,可快取的項目就會具備相關的快取到期值,如此一來瀏覽器再也不用下載該項目,甚至確認它是否擁有最新版本。例如,假設您想啟用快取功能,並在網頁伺服器設定最高 100 MB 的空間以儲存項目。快取應當每天到期一次,而且除了快取預先定義的類型之外,還需快取 .htc 檔案。若要支援這些需求,請指定下列 BlobCache 屬性:

<BlobCache location="C:\blobcache" path="\.(gif|jpg|png|css|js|htc)$ " maxSize="100" max-age="86400" enabled="true"/>

請注意,對 Web.config 檔案所做的這項變更,必須在伺服器陣列中的每一部網頁伺服器進行。大部分情況下,BLOB 快取會立即開始工作,不過當您實作變更時,使用 iisreset 命令是最安全的。以下的螢幕擷取畫面與之前顯示的頁面要求 Fiddler 資料相同,唯一不同的是,已經按照前文所述啟用 BLOB 快取。

Fiddler 工具結果

請注意,/SiteCollectionImages 文件庫中的所有項目現在都有一個 HTTP 狀態碼 200,這個號碼指出這些項目都已成功下載。此外,它們現在都有一個相關的快取指令,指定它們不會在一天內到期 (86,400 秒)。如果再次要求這個頁面,Fiddler 會顯示未再次要求任何影像;頁面服務的要求總數因此從 44 滑落到 3 個,而且其餘 3 個要求中的兩個,僅僅是網頁伺服器和用戶端應用程式之間的 NTLM 驗證協商。下圖顯示再次要求頁面時,出現的 Fiddler 資料。

Fiddler 工具結果

當您使用 BLOB 快取時,其他應當考慮的因素

另外,使用 BLOB 快取的時候,請考慮下列幾點:

  • 因為您必須更新每一部網頁伺服器上的 Web.config 檔案,所以需要多花一些力氣。不過,您的付出是值得的。

  • 查看網站內容,然後判斷是否也要快取其他的檔案類型。.htc 檔案就是個不錯的範例。因為 .htc 檔案用於大部分的發佈網站,所以您應該將這個檔案類型新增至快取的檔案類型清單中。

  • BLOB 快取只能用於儲存在 SharePoint 文件庫的項目;無法用來快取其他來源的內容。

  • 預設中的部分清單無法用於匿名使用者。如果有匿名使用者使用這個網站,則必須手動設定下列清單的權限,才能快取其中的項目:

    • 主版頁面圖庫

    • 樣式庫

使用 BLOB 快取時,還要注意其他兩種設定選項。第一個和清除 BLOB 快取有關。如果要清除特定網站的快取,請瀏覽至該網站集合,然後依序按一下 [網站動作]、[網站設定]、[修改所有網站設定] 功能表。在網站集合管理工作清單中,按一下 [網站集合物件快取] 連結。在 [磁碟快取重設] 區段中,選取 [強制此伺服器重設其磁碟快取] 核取方塊,然後按一下 [確定]。