Bagikan melalui


Client Cache <clientCache Klien>

Gambaran Umum

Elemen <clientCache><staticContent> elemen menentukan header HTTP terkait cache yang dikirim IIS 7 dan yang lebih baru ke klien Web, yang mengontrol bagaimana klien Web dan server proksi akan menyimpan konten yang dikembalikan IIS 7 dan yang lebih baru.

Misalnya, atribut httpExpires menentukan tanggal dan waktu konten harus kedaluwarsa, dan IIS 7 dan yang lebih baru akan menambahkan header HTTP "Kedaluwarsa" ke respons. Nilai untuk atribut httpExpires harus merupakan tanggal dan waktu yang sepenuhnya diformat yang mengikuti spesifikasi dalam RFC 1123. Contohnya:

Jum, 01 Jan 2010 12:00:00 GMT

Catatan

Untuk menggunakan atribut httpExpires , Anda perlu mengatur nilai atribut cacheControlMode ke UseExpires.

Spesifikasi HTTP 1.1 dalam Request For Comments (RFC) 2616 menentukan beberapa nilai yang mungkin untuk header HTTP "Cache-Control", seperti "no-cache," "private," "public," dll. Masing-masing nilai header ini memungkinkan klien Web dan server proksi mengetahui apakah mereka harus menyimpan konten dalam cache:

  • Konten yang berisi header "tanpa cache" tidak boleh di-cache oleh entitas apa pun. - Konten yang berisi header "privat" tidak boleh di-cache oleh server proksi, tetapi dapat di-cache oleh klien Web. - Konten yang berisi header "publik" dapat di-cache oleh entitas apa pun.

    Catatan

    Daftar di atas tidak komprehensif - ada banyak nilai tambahan yang dapat ditentukan oleh header "Cache-Control".

Direktif tambahan dapat ditambahkan ke header HTTP "Cache-Control", seperti "max-age," yang menentukan waktu kedaluwarsa eksplisit untuk konten. Di IIS 7, direktif "usia maks" dikonfigurasi melalui atribut cacheControlMaxAge . Meskipun pengaturan "Kedaluwarsa" dan "usia maks" agak analog, arahan "usia maks" lebih diprioritaskan daripada "Kedaluwarsa".

Catatan

Untuk menggunakan atribut cacheControlMaxAge , Anda perlu mengatur nilai atribut cacheControlMode ke UseMaxAge.

Untuk informasi selengkapnya tentang header penembolokan HTTP dan format tanggal/waktu, lihat artikel Permintaan Komentar (RFC) berikut ini:

  • RFC 1123 - "Persyaratan untuk Host Internet -- Aplikasi dan Dukungan"
  • RFC 2616 - "Protokol Transfer Hiperteks -- HTTP/1.1"

Kompatibilitas

Versi Catatan
IIS 10.0 Elemen <clientCache> tidak dimodifikasi dalam IIS 10.0.
IIS 8.5 Elemen <clientCache> tidak dimodifikasi dalam IIS 8.5.
IIS 8.0 Atribut setEtag ditambahkan untuk menentukan apakah header HTTP ETag dihitung dan diatur.
IIS 7.5 Elemen <clientCache> tidak dimodifikasi dalam IIS 7.5.
IIS 7.0 Elemen <clientCache><staticContent> elemen diperkenalkan di IIS 7.0.
IIS 6.0 Elemen menggantikan <clientCache> properti metabase IIS 6.0 berikut:
  • CacheControlCustom
  • CacheControlMaxAge
  • CacheControlNoCache
  • HttpExpires

Siapkan

Elemen <clientCache><staticContent> elemen disertakan dalam penginstalan default IIS 7 dan yang lebih baru.

Bagaimana Caranya

Cara mengonfigurasi tanggal kedaluwarsa cache untuk situs web atau aplikasi

  1. Buka Pengelola Layanan Informasi Internet (IIS):

    • Jika Anda menggunakan Windows Server 2012 atau Windows Server 2012 R2:

      • Pada bilah tugas, klik Manajer Server, klik Alat, lalu klik Pengelola Layanan Informasi Internet (IIS).
    • Jika Anda menggunakan Windows 8 atau Windows 8.1:

      • Tahan tombol Windows, tekan huruf X, lalu klik Panel Kontrol.
      • Klik Alat Administratif, lalu klik dua kali Manajer Layanan Informasi Internet (IIS).
    • Jika Anda menggunakan Windows Server 2008 atau Windows Server 2008 R2:

      • Pada bilah tugas, klik Mulai, arahkan ke Alat Administratif, lalu klik Pengelola Layanan Informasi Internet (IIS).
    • Jika Anda menggunakan Windows Vista atau Windows 7:

      • Pada taskbar, klik Mulai, lalu klik Panel Kontrol.
      • Klik dua kali Alat Administratif, lalu klik dua kali Manajer Layanan Informasi Internet (IIS).
  2. Di panel Koneksi , buka situs, aplikasi, atau direktori yang ingin Anda nonaktifkan penembolokannya.

  3. Di panel Beranda , klik dua kali Header Respons HTTP.
    Cuplikan layar yang memperlihatkan panel Beranda Situs Web Default, dengan Header Respons H T T P dipilih.

  4. Di panel Header Respons HTTP , klik Atur Header Umum... di panel Tindakan .
    Cuplikan layar yang memperlihatkan panel Header Respons H T T P di Manajer I I S.

  5. Dalam kotak dialog Atur Header Respons HTTP Umum , centang kotak untuk kedaluwarsa konten Web, pilih opsi untuk kedaluwarsa setelah interval tertentu atau pada waktu tertentu, lalu klik OK.
    Cuplikan layar yang memperlihatkan kotak dialog Atur Header Respons H T T P Umum. Aktifkan H T T P tetap hidup dipilih.
    Cuplikan layar yang memperlihatkan kotak dialog Atur Header Respons H T T P Umum. Setelah dipilih di bawah kotak centang Konten web Kedaluwarsa.

Cara menonaktifkan penembolokan untuk situs web atau aplikasi

  1. Buka Pengelola Layanan Informasi Internet (IIS):

    • Jika Anda menggunakan Windows Server 2012 atau Windows Server 2012 R2:

      • Pada bilah tugas, klik Manajer Server, klik Alat, lalu klik Pengelola Layanan Informasi Internet (IIS).
    • Jika Anda menggunakan Windows 8 atau Windows 8.1:

      • Tahan tombol Windows, tekan huruf X, lalu klik Panel Kontrol.
      • Klik Alat Administratif, lalu klik dua kali Manajer Layanan Informasi Internet (IIS).
    • Jika Anda menggunakan Windows Server 2008 atau Windows Server 2008 R2:

      • Pada bilah tugas, klik Mulai, arahkan ke Alat Administratif, lalu klik Pengelola Layanan Informasi Internet (IIS).
    • Jika Anda menggunakan Windows Vista atau Windows 7:

      • Pada taskbar, klik Mulai, lalu klik Panel Kontrol.
      • Klik dua kali Alat Administratif, lalu klik dua kali Manajer Layanan Informasi Internet (IIS).
  2. Di panel Koneksi , buka situs, aplikasi, atau direktori yang ingin Anda nonaktifkan penembolokannya.

  3. Di panel Beranda , klik dua kali Header Respons HTTP.
    Cuplikan layar yang memperlihatkan panel Beranda Situs Web Default. Header Respons H T T P dipilih.

  4. Di panel Header Respons HTTP , klik Atur Header Umum... di panel Tindakan .
    Cuplikan layar yang memperlihatkan panel Header Respons H T T P.

  5. Dalam kotak dialog Atur Header Respons HTTP Umum , centang kotak untuk kedaluwarsa konten Web, pilih Segera, lalu klik OK.
    Cuplikan layar yang memperlihatkan kotak dialog Atur Header Respons H T T P Umum. Segera dipilih di bawah kotak centang Konten web kedaluwarsa.

Konfigurasi

Atribut

Atribut Deskripsi
cacheControlCustom Atribut string opsional.

Menentukan direktif kontrol cache HTTP 1.1 kustom.
cacheControlMaxAge Atribut timeSpan opsional.

Menentukan usia maksimum (dalam detik) dari nilai kontrol cache.

Nilai defaultnya adalah 1.00:00:00 (1 hari).
cacheControlMode Atribut enum opsional.

Menentukan mode yang akan digunakan untuk penembolokan klien.

Atribut cacheControlMode dapat menjadi salah satu nilai yang mungkin berikut.

Default adalah NoControl.
Nilai Deskripsi
NoControl Tidak menambahkan header Cache-Control atau Kedaluwarsa ke respons.

Nilai numerik adalah 0.
DisableCache Menambahkan header Cache-Control: no-cache ke respons.

Nilai numerik adalah 1.
UseMaxAge Menambahkan header Cache-Control: max-age=<nnn> ke respons berdasarkan nilai yang ditentukan dalam atribut CacheControlMaxAge .

Nilai numerik adalah 2.
UseExpires Menambahkan header Kedaluwarsa: <tanggal> ke respons berdasarkan tanggal yang ditentukan dalam atribut httpExpires .

Nilai numerik adalah 3.
httpExpires Atribut string opsional.

Menentukan tanggal dan waktu setelah halaman yang di-cache pada klien dianggap basi. (Tanggal dan waktu diformat sesuai dengan spesifikasi dalam Permintaan Komentar 1123.) Nilai dikembalikan ke browser di header file HTML. Agen pengguna membandingkan nilai yang diberikan dengan tanggal saat ini untuk menentukan apakah akan menampilkan halaman yang di-cache atau meminta halaman yang diperbarui dari server.
setEtag Atribut Boolean opsional.

Menentukan apakah header HTTP ETag dihitung dan diatur. Header ETag digunakan untuk validasi cache web, dan memungkinkan server Web untuk tidak perlu mengirim respons penuh jika tidak ada perubahan yang dilakukan pada konten. setEtag dapat diatur di Editor Konfigurasi di jalur system.webServer/staticContent.

Nilai defaultnya adalah true.

Elemen Anak

Tidak ada.

Sampel Konfigurasi

Sampel konfigurasi berikut menambahkan header HTTP "Cache-Control: no-cache" ke respons, sehingga menonaktifkan penembolokan permintaan.

<configuration>
   <system.webServer>
      <staticContent>
         <clientCache cacheControlMode="DisableCache" />
      </staticContent>
   </system.webServer>
</configuration>

Sampel konfigurasi berikut menambahkan header HTTP "Kedaluwarsa: Tue, 19 Jan 2038 03:14:07 GMT" ke respons, yang mengonfigurasi permintaan untuk kedaluwarsa beberapa tahun dari sekarang.

<configuration>
   <system.webServer>
      <staticContent>
         <clientCache cacheControlMode="UseExpires"
            httpExpires="Tue, 19 Jan 2038 03:14:07 GMT" />
      </staticContent>
   </system.webServer>
</configuration>

Kode Sampel

Sampel kode berikut menambahkan header HTTP "Cache-Control: no-cache" ke respons, sehingga menonaktifkan penembolokan permintaan.

AppCmd.exe

appcmd.exe set config "Default Web Site" -section:system.webServer/staticContent /clientCache.cacheControlMode:"DisableCache"

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.GetWebConfiguration("Default Web Site");
         ConfigurationSection staticContentSection = config.GetSection("system.webServer/staticContent");

         ConfigurationElement clientCacheElement = staticContentSection.GetChildElement("clientCache");
         clientCacheElement["cacheControlMode"] = @"DisableCache";

         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.GetWebConfiguration("Default Web Site")
      Dim staticContentSection As ConfigurationSection = config.GetSection("system.webServer/staticContent")

      Dim clientCacheElement As ConfigurationElement = staticContentSection.GetChildElement("clientCache")
      clientCacheElement("cacheControlMode") = "DisableCache"

      serverManager.CommitChanges()
   End Sub

End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST/Default Web Site";

var staticContentSection = adminManager.GetAdminSection("system.webServer/staticContent", "MACHINE/WEBROOT/APPHOST/Default Web Site");
var clientCacheElement = staticContentSection.ChildElements.Item("clientCache");
clientCacheElement.Properties.Item("cacheControlMode").Value = "DisableCache";

adminManager.CommitChanges();

Vbscript

Set adminManager = WScript.CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST/Default Web Site"

Set staticContentSection = adminManager.GetAdminSection("system.webServer/staticContent", "MACHINE/WEBROOT/APPHOST/Default Web Site")
Set clientCacheElement = staticContentSection.ChildElements.Item("clientCache")
clientCacheElement.Properties.Item("cacheControlMode").Value = "DisableCache"

adminManager.CommitChanges()

Sampel kode berikut menambahkan header HTTP "Kedaluwarsa: Tue, 19 Jan 2038 03:14:07 GMT" ke respons, yang mengonfigurasi permintaan untuk kedaluwarsa beberapa tahun dari sekarang.

AppCmd.exe

appcmd.exe set config "Default Web Site" -section:system.webServer/staticContent /clientCache.cacheControlMode:"UseExpires"

appcmd.exe set config "Default Web Site" -section:system.webServer/staticContent /clientCache.httpExpires:"Tue, 19 Jan 2038 03:14:07 GMT"

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.GetWebConfiguration("Default Web Site");
         ConfigurationSection staticContentSection = config.GetSection("system.webServer/staticContent");

         ConfigurationElement clientCacheElement = staticContentSection.GetChildElement("clientCache");
         clientCacheElement["cacheControlMode"] = @"UseExpires";
         clientCacheElement["httpExpires"] = @"Tue, 19 Jan 2038 03:14:07 GMT";

         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.GetWebConfiguration("Default Web Site")
      Dim staticContentSection As ConfigurationSection = config.GetSection("system.webServer/staticContent")

      Dim clientCacheElement As ConfigurationElement = staticContentSection.GetChildElement("clientCache")
      clientCacheElement("cacheControlMode") = "UseExpires"
      clientCacheElement("httpExpires") = "Tue, 19 Jan 2038 03:14:07 GMT"

      serverManager.CommitChanges()
   End Sub

End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST/Default Web Site";

var staticContentSection = adminManager.GetAdminSection("system.webServer/staticContent", "MACHINE/WEBROOT/APPHOST/Default Web Site");
var clientCacheElement = staticContentSection.ChildElements.Item("clientCache");
clientCacheElement.Properties.Item("cacheControlMode").Value = "UseExpires";
clientCacheElement.Properties.Item("httpExpires").Value = "Tue, 19 Jan 2038 03:14:07 GMT";

adminManager.CommitChanges();

Vbscript

Set adminManager = WScript.CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST/Default Web Site"

Set staticContentSection = adminManager.GetAdminSection("system.webServer/staticContent", "MACHINE/WEBROOT/APPHOST/Default Web Site")
Set clientCacheElement = staticContentSection.ChildElements.Item("clientCache")
clientCacheElement.Properties.Item("cacheControlMode").Value = "UseExpires"
clientCacheElement.Properties.Item("httpExpires").Value = "Tue, 19 Jan 2038 03:14:07 GMT"

adminManager.CommitChanges()