Mengonfigurasi Penembolokan Output IIS 7

oleh Tali Smith

Layanan Informasi Internet (IIS) menyertakan fitur cache output yang dapat menyimpan konten PHP dinamis (atau output dari Microsoft® ASP.NET atau ASP klasik Anda, atau halaman dinamis lainnya) dalam memori. Ini dapat menghasilkan peningkatan performa yang sangat besar, karena skrip yang digunakan untuk menghasilkan output dinamis tidak perlu berjalan untuk setiap permintaan. Cache dapat memvariasikan output yang di-cache berdasarkan nilai string kueri serta header HTTP yang dikirim dari klien ke server. Cache juga terintegrasi dengan driver mode kernel Http.sys, meningkatkan performa.

Kapan Menggunakan Penembolokan Output

Konten web dapat dibagi menjadi dua kategori utama: konten statis dan konten dinamis.

  • Konten statis tidak berubah dari permintaan ke permintaan. Konten yang dikembalikan ke browser Web selalu sama. Contoh konten statis termasuk file HTML, JPG, atau GIF.
  • Konten dinamis adalah output yang berubah dengan setiap permintaan. Contohnya termasuk konten ASP.NET atau PHP.

Di antara kedua kategori ini adalah konten semi-dinamis. Bayangkan halaman ASP.NET dinamis yang menjalankan kueri database. Tidak ada alasan untuk menjalankan kueri ini pada setiap permintaan jika tabel database yang mendasar jarang berubah.

IIS secara otomatis menyimpan konten statis (seperti halaman HTML, gambar, dan lembar gaya), karena jenis konten ini tidak berubah dari permintaan ke permintaan. IIS juga mendeteksi perubahan pada file saat Anda membuat pembaruan, dan IIS menghapus cache sesuai kebutuhan.

Fitur penembolokan output IIS menargetkan konten semi-dinamis. Ini memungkinkan Anda menyimpan respons statis untuk permintaan dinamis dan meningkatkan skalabilitas.

Perhatikan bahwa tidak setiap halaman dinamis dapat memanfaatkan cache output. Halaman yang sangat dipersonalisasi (seperti ke cart belanja atau transaksi e-niaga) bukan kandidat yang baik karena output dinamis tidak mungkin diminta berulang kali, dan memori yang digunakan untuk menyimpan konten akan sia-sia. Konten yang dihasilkan sebagai akibat dari permintaan jenis POST ke formulir HTML juga tidak dapat di-cache.

Kandidat terbaik untuk cache output adalah halaman yang menghasilkan data secara dinamis tetapi tidak mungkin berubah dari permintaan ke permintaan berdasarkan URL atau informasi header. Misalnya, aplikasi jenis galeri foto yang mengubah ukuran gambar secara dinamis untuk ditampilkan di halaman Web adalah kandidat yang bagus untuk cache output karena penembolokan data menghemat server dari harus memproses ulang ukuran gambar untuk setiap permintaan. Contoh lain yang baik dari jenis aplikasi yang dapat memanfaatkan fitur cache output adalah aplikasi ticker stok.

Pilih Kebijakan Cache

IIS mendukung dua jenis kebijakan cache:

  • varyByQuerystring, di mana URL sama tetapi nilai string kueri bervariasi.
  • varybyHeaders, yang dapat memvariasi cache berdasarkan header HTTP yang dikirim dari klien ke server.

Membatalkan Validasi Cache

Dengan konten dinamis, data dapat sering berubah dan Anda harus menghapus cache, memungkinkan data baru diambil dan di-cache ulang. Perhatikan bahwa bahkan jika data berubah sesering setiap detik, mungkin masih berguna untuk menyimpan data; situs mungkin mendapatkan ratusan permintaan per detik atau lebih, dan penembolokan dapat mengurangi perjalanan ke database untuk mengambil data, menyimpan server Web dan server database dari pekerjaan tambahan.

IIS mendukung dua cara untuk membatalkan konten dinamis:

  • Gunakan periode batas waktu sederhana - properti konfigurasi adalah CacheForTimePeriod.
  • Mendeteksi perubahan pada sumber daya yang mendasar - properti konfigurasinya adalah CacheUntilChange. Gunakan jenis skema invalidasi ini hanya ketika Anda ingin cache dihapus saat sumber daya yang mendasar berubah.

Mengonfigurasi Cache Worthiness

Bahkan jika Anda mengaktifkan penembolokan output, IIS tidak segera menyimpan permintaan. Ini harus diminta beberapa kali sebelum IIS menganggap permintaan sebagai "cache layak." Kelayakan cache dapat dikonfigurasi melalui bagian ServerRuntime yang dijelaskan dalam artikel Kelas ServerRuntimeSection.

Dua properti menentukan kelayakan cache:

  • frequentHitTimePeriod
  • frequentHitThreshold

Permintaan hanya di-cache jika lebih dari <frequentHitThreshold> permintaan URL yang dapat di-cache tiba di <frequentHitTimePeriod>dalam . Pengaturan default untuk frequentHitTimePeriod adalah 10 detik. Pengaturan default untuk frequentHitThreshold adalah 2 temuan.

Mengonfigurasi Penembolokan Output Melalui Manajer IIS

Cache ini cukup mudah dikonfigurasi menggunakan fitur antarmuka pengguna di alat administrasi IIS baru.

  1. Dari menu Mulai, klik Alat Administratif, lalu klik manajer Layanan Informasi Internet (IIS).

  2. Dalam tampilan pohon di sisi kiri, temukan aplikasi Anda.

  3. Pilih item menu Penembolokan Output.

  4. Di kolom kanan, klik Tambahkan di menu Tindakan . Anda dapat menambahkan aturan penembolokan output Anda di sini.

  5. Di bidang Ekstensi nama file, misalnya, ketik .php, lalu pilih Penembolokan mode pengguna.

  6. Klik Tingkat Lanjut, lalu pilih kotak centang Variabel string kueri.

  7. Masukkan variabel yang sesuai dalam kotak teks Variabel string kueri.

    Cuplikan layar kotak dialog Tambahkan Aturan Cache, halaman Penembolokan Output, dan Aturan Singgahan Output Tingkat Lanjut Pengaturan.

    Gambar 1: Contoh penembolokan output

Mengonfigurasi Penembolokan Output Melalui File Web.config

Anda juga dapat mengonfigurasi fitur penembolokan di file Web.config lokal, yang ditemukan di direktori konten. Di bawah ini adalah sampel konfigurasi yang diperlukan untuk halaman ShowStockPrice.asp dengan parameter varyByQueryString * (yang berarti cache semua variasi unik parameter querystring) dan batas waktu 1 detik.

<configuration> 
     <location path="showStockPrice.asp">     
       <system.webserver>        
         <caching>         
           <profiles>
             <add varybyquerystring="*"location="Any"
               duration="00:00:01" policy="CacheForTimePeriod"            
               extension=".asp">
           </profiles>
         </caching>
       </system.webserver>
     </location>
</configuration>

Jika Anda ingin menyimpan data ini di kernel untuk performa yang lebih cepat, Anda hanya perlu mengubah atribut kebijakan ke kernelCachePolicy.

Catatan

Microsoft ASP.NET sudah menyertakan fitur cache output; Fitur cache output IIS berfungsi secara paralel dengan cache ASP.NET dan berfungsi untuk semua jenis aplikasi.

Periksa Penghitung Performa

Untuk melihat performa dalam cache output, Anda dapat melihat penghitung cache output di monitor keandalan dan performa.

  1. Dari menu Mulai, klik Alat Administratif, lalu klik Keandalan dan Monitor Performa. (Pada Windows Vista® atau Windows® 7, Alat Administratif ditemukan di Panel Kontrol.)
  2. Pilih Monitor Performa di tampilan pohon di sebelah kanan, lalu klik + di toolbar.
  3. Navigasikan ke penghitung Cache Layanan Web, lalu klik untuk membukanya.
  4. Tambahkan penghitung Total URI Cache.

Jika Anda menjalankan pengujian performa, Anda dapat melihat bahwa jumlah URI yang di-cache meningkat dengan jumlah jika item yang Anda minta.

Menggunakan Penembolokan Mode Kernel

Cache output IIS mendukung dua kebijakan cache:

  • Kebijakan cache output mode pengguna, yang menggunakan cache yang berada dalam proses pekerja IIS.
  • Kebijakan cache mode kernel, yang menggunakan cache yang berada di Http.sys, driver mode kernel.

Penembolokan konten Anda dalam mode kernel memungkinkan Anda mempercepat performa situs Web. Contoh penggunaan penembolokan mode kernel dapat ditemukan di artikel Penembolokan Output IIS.

Perhatikan bahwa ada dua perbedaan signifikan antara cache output mode pengguna dan mode kernel.

  • Cache output mode kernel tidak mendukung modul dan fitur yang harus berjalan dalam mode pengguna, seperti autentikasi atau otorisasi. Misalnya, jika skema autentikasi seperti autentikasi dasar atau autentikasi Windows® diaktifkan, kebijakan cache tidak berfungsi. Konten disajikan tetapi tidak di-cache. Anda dapat menemukan detail selengkapnya tentang mengapa respons mungkin tidak di-cache dalam mode kernel di artikel Pangkalan Pengetahuan ini.
  • Cache output mode kernel mendukung atribut varyByHeaders, tetapi tidak varyByQuerystring.

Memecahkan masalah Penembolokan

Failed Request Event Buffering (FREB) adalah cara terbaik untuk mengetahui apakah permintaan Anda di-cache atau tidak; Anda juga dapat mengetahui mengapa permintaan tidak di-cache. Misalnya, peristiwa HTTPSYS_CACHEABLE dalam log FREB dapat memberi tahu Anda bahwa permintaan tidak di-cache karena cache mode kernel tidak diaktifkan.

Perintah berikut dapat digunakan untuk mengetahui konten mana yang di-cache dalam mode kernel:

netsh http show cachestate

Anda dapat mengatur cache output ke cache hanya halaman default Anda (halaman yang paling sering diminta):

  1. Buat file yang disebut default.aspx di %systemdrive%\inetpub\wwwroot\<direktori aplikasi> Anda dan tambahkan kode berikut:

    <%=DateTime.Now%>
    
  2. Dari menu Mulai, klik Alat Administratif, lalu klik manajer Layanan Informasi Internet (IIS).

  3. Gunakan tampilan pohon di sisi kiri untuk menavigasi ke aplikasi Anda.

  4. Klik Tampilan Konten di bagian bawah halaman.

  5. Pilih dokumen default Anda (misalnya, halaman Default.aspx).

  6. Di menu Tindakan di sebelah kanan, klik Beralih ke tampilan fitur . Setiap pengaturan yang Anda konfigurasi sekarang hanya diterapkan ke dokumen default.

  7. Buka pengaturan Aturan Penembolokan Output.

  8. Tambahkan .aspx sebagai ekstensi file.

  9. Pilih Penembolokan mode Kernel, pilih Interval waktu, aktifkan Pantau file yang di-cache, lalu ketik interval waktu, seperti 00:00:30.

  10. Telusuri dengan http://localhost//<your application> Windows® Internet Explorer®. Dengan terus menyegarkan halaman (tekan Ctrl+F5 untuk memastikan Anda tidak menggunakan cache browser), Anda melihat bahwa waktu tidak berubah selama 30 detik.

Catatan

Artikel ini didasarkan pada informasi dari artikel "Penembolokan Output IIS 7 untuk Konten Dinamis - Mempercepat Aplikasi ASP dan PHP Anda" oleh Bill Staples, yang diterbitkan pada 2 Mei 2007.

Lihat juga