快取快取 <>
概觀
元素 <caching>
可讓您啟用或停用 Internet Information Services (IIS) 7 應用程式的頁面輸出快取。 這個專案也可讓您設定 IIS 是否會在使用者模式、核心模式或兩者中快取頁面輸出,以及您想要強制執行的輸出快取限制。
元素 <caching>
也包含 <profiles>
專案,其中包含您可以套用至 ASP.NET 網頁的輸出快取設定集合。
頁面輸出快取會在瀏覽器要求動態頁面之後儲存動態頁面的回應,例如 ASP 頁面或 ASP.NET 網頁。 當後續要求到達頁面時,伺服器會傳送快取的回應,而不是重新處理頁面。 ASP.NET 網頁輸出快取與 IIS 7 輸出快取不同。 在使用整合式 ASP.NET 模式的應用程式中,ASP.NET 網頁輸出快取可以程式設計方式用於任何內容類型,就像 IIS 7 輸出快取一樣。
頁面輸出快取可減少伺服器負載和回應時間。 輸出快取最適合使用半動態的頁面,例如相依于不常變更之資料庫資料表的 ASP.NET 網頁。
靜態檔案不需要輸出快取,例如 HTML、JPG 或 GIF 檔案,而且可能會對經常變更的資料庫讀取動態 ASP.NET 或 PHP 頁面造成更多記憶體額外負荷。
相容性
版本 | 備註 |
---|---|
IIS 10.0 | 在 <caching> IIS 10.0 中未修改專案。 |
IIS 8.5 | 未 <caching> 在 IIS 8.5 中修改專案。 |
IIS 8.0 | 在 IIS 8.0 中未修改專案 <caching> 。 |
IIS 7.5 | 未 <caching> 在 IIS 7.5 中修改專案。 |
IIS 7.0 | 專案 <caching> 是在 IIS 7.0 中引進的。 |
IIS 6.0 | N/A |
安裝程式
專案 <caching>
包含在 IIS 7 的預設安裝中。
作法
如何設定頁面輸出快取
(IIS) 管理員開啟 Internet Information Services:
如果您使用 Windows Server 2012 或 Windows Server 2012 R2:
- 在工作列上,依序按一下 [伺服器管理員]、[工具],然後按一下 [Internet Information Services] ([IIS) 管理員]。
如果您使用 Windows 8 或 Windows 8.1:
- 按住Windows鍵,按字母X,然後按一下[主控台]。
- 按一下 [ 系統管理工具],然後按兩下 [Internet Information Services] ([IIS) 管理員]。
如果您使用 Windows Server 2008 或 Windows Server 2008 R2:
- 在工作列上,按一下 [ 開始],指向 [ 系統管理工具],然後按一下 [ Internet Information Services (IIS) 管理員]。
如果您使用 Windows Vista 或 Windows 7:
- 在工作列上,按一下 [開始],然後按一下[主控台]。
- 按兩下 [ 系統管理工具],然後按兩下 [Internet Information Services] ([IIS) 管理員]。
在 [ 連線 ] 窗格中,移至您要設定頁面輸出快取的連線、月臺、應用程式或目錄。
在 [ 首頁 ] 窗格中,捲動至 [ 輸出快取],然後按兩下 [ 輸出快取]。
在 [ 動作] 窗格中,按一下 [ 新增...
在 [ 新增快取規則 ] 對話方塊中,在 [ 副檔名 ] 方塊中輸入您要快取的副檔名,然後選取 [使用者模式 快取] 選項、 [核心模式快取 ] 選項或兩者。
選取您要用於快取的選項,然後按一下 [ 確定]。
組態
您可以在 <caching>
ApplicationHost.config檔案或月臺、應用程式或Web.config檔案的目錄層級設定專案。
屬性
屬性 | 描述 |
---|---|
enabled |
選擇性的 Boolean 屬性。 指定是否啟用頁面輸出快取。 預設值是 true 。 |
enableKernelCache |
選擇性的 Boolean 屬性。 指定是否啟用核心快取。 預設值是 true 。 |
maxCacheSize |
選擇性 uint 屬性。 指定輸出快取的大小上限。 注意: 此設定只有在ApplicationHost.config檔案層級才有效。 如果您將此屬性設定為較低層級,則不會有任何作用。 預設值是 0 。 |
maxResponseSize |
選擇性 uint 屬性。 指定可快取的回應大小上限。 注意: 此設定只有在ApplicationHost.config檔案層級才有效。 如果您將此屬性設定為較低層級,則不會有任何作用。 預設值是 262144 。 |
子元素
元素 | 描述 |
---|---|
profiles |
選擇性項目。 包含可套用至 ASP.NET 網頁的輸出快取設定群組。 |
組態範例
下列組態範例會啟用使用者模式快取和核心模式快取,這兩者在 IIS 7.0 中預設都會啟用。 它也會使用 <add>
元素所包含的 <profiles>
專案,為副檔名為 .asp 的檔案啟用輸出快取。 它也會使用 原則 屬性來輸出快取頁面,直到頁面變更為止;其會使用 kernelCachePolicy 屬性對核心快取執行相同動作。
<configuration>
<system.webServer>
<caching enabled="true" enableKernelCache="true">
<profiles>
<add extension=".asp" policy="CacheUntilChange" kernelCachePolicy="CacheUntilChange" />
</profiles>
</caching>
</system.webServer>
</configuration>
下列程式碼範例會將輸出快取大小上限設定為 1 GB,並將可儲存在輸出快取中的回應大小上限設定為 512 KB。
<configuration>
<system.webServer>
<caching enabled="true" enableKernelCache="true" maxCacheSize="1000" maxResponseSize="512000"/>
</system.webServer>
</configuration>
範例程式碼
下列範例會針對副檔名為 .asp 的檔案設定頁面輸出快取,並將 IIS 設定為在使用者模式和核心模式中快取,直到 ASP 檔案變更為止。
AppCmd.exe
appcmd.exe set config -section:system.webServer/caching /+"profiles.[extension='asp',policy='CacheUntilChange',kernelCachePolicy='CacheUntilChange']" /commit:apphost
注意
當您使用AppCmd.exe設定這些設定時,請務必將 認可 參數 apphost
設定為 。 這會將組態設定認可至ApplicationHost.config檔案中適當的位置區段。
C#
using System;
using System.Text;
using Microsoft.Web.Administration;
internal static class Sample {
private static void Main() {
using(ServerManager serverManager = new ServerManager()) {
Configuration config = serverManager.GetApplicationHostConfiguration();
ConfigurationSection cachingSection = config.GetSection("system.webServer/caching");
ConfigurationElementCollection profilesCollection = cachingSection.GetCollection("profiles");
ConfigurationElement addElement = profilesCollection.CreateElement("add");
addElement["extension"] = @"asp";
addElement["policy"] = @"CacheUntilChange";
addElement["kernelCachePolicy"] = @"CacheUntilChange";
profilesCollection.AddAt(0, addElement);
serverManager.CommitChanges();
}
}
}
VB.NET
Imports System
Imports System.Text
Imports Microsoft.Web.Administration
Module Sample
Sub Main()
Dim serverManager As ServerManager = New ServerManager
Dim config As Configuration = serverManager.GetApplicationHostConfiguration
Dim cachingSection As ConfigurationSection = config.GetSection("system.webServer/caching")
Dim profilesCollection As ConfigurationElementCollection = cachingSection.GetCollection("profiles")
Dim addElement As ConfigurationElement = profilesCollection.CreateElement("add")
addElement("extension") = "asp"
addElement("policy") = "CacheUntilChange"
addElement("kernelCachePolicy") = "CacheUntilChange"
profilesCollection.AddAt(0, addElement)
serverManager.CommitChanges()
End Sub
End Module
JavaScript
var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var cachingSection = adminManager.GetAdminSection("system.webServer/caching", "MACHINE/WEBROOT/APPHOST");
var profilesCollection = cachingSection.ChildElements.Item("profiles").Collection;
var addElement = profilesCollection.CreateNewElement("add");
addElement.Properties.Item("extension").Value = "asp";
addElement.Properties.Item("policy").Value = "CacheUntilChange";
addElement.Properties.Item("kernelCachePolicy").Value = "CacheUntilChange";
profilesCollection.AddElement(addElement, 0);
adminManager.CommitChanges();
VBScript
Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set cachingSection = adminManager.GetAdminSection("system.webServer/caching", "MACHINE/WEBROOT/APPHOST")
Set profilesCollection = cachingSection.ChildElements.Item("profiles").Collection
Set addElement = profilesCollection.CreateNewElement("add")
addElement.Properties.Item("extension").Value = "asp"
addElement.Properties.Item("policy").Value = "CacheUntilChange"
addElement.Properties.Item("kernelCachePolicy").Value = "CacheUntilChange"
profilesCollection.AddElement addElement, 0
adminManager.CommitChanges()