Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
oleh Microsoft
Pemahaman tentang penembolokan penting untuk aplikasi ASP.NET berkinerja baik. ASP.NET 1.x menawarkan tiga opsi berbeda untuk penembolokan; penembolokan output, penembolokan fragmen, dan API cache.
Pemahaman tentang penembolokan penting untuk aplikasi ASP.NET berkinerja baik. ASP.NET 1.x menawarkan tiga opsi berbeda untuk penembolokan; penembolokan output, penembolokan fragmen, dan API cache. ASP.NET 2.0 menawarkan ketiga metode ini, tetapi menambahkan beberapa fitur tambahan yang signifikan. Ada beberapa dependensi dan pengembang cache baru sekarang memiliki opsi untuk membuat dependensi cache kustom juga. Konfigurasi penembolokan juga telah ditingkatkan secara signifikan di ASP.NET 2.0.
Fitur baru
Profil Cache
Profil cache memungkinkan pengembang menentukan pengaturan cache tertentu yang kemudian dapat diterapkan ke halaman individual. Misalnya, jika Anda memiliki beberapa halaman yang harus kedaluwarsa dari cache setelah 12 jam, Anda dapat dengan mudah membuat profil cache yang dapat diterapkan ke halaman tersebut. Untuk menambahkan profil cache baru, gunakan bagian <outputCacheSettings> dalam file konfigurasi. Misalnya, di bawah ini adalah konfigurasi profil cache yang disebut dua hari yang mengonfigurasi durasi cache 12 jam.
<outputCacheSettings>
<outputCacheProfiles>
<add name="TwoDay" duration="43200" />
</outputCacheProfiles>
</outputCacheSettings>
Untuk menerapkan profil cache ini ke halaman tertentu, gunakan atribut CacheProfile dari arahan @ OutputCache seperti yang ditunjukkan di bawah ini:
<%@ OutputCache CacheProfile="TwoDay" %>
Dependensi Cache Kustom
ASP.NET pengembang 1.x menangis untuk dependensi cache kustom. Dalam ASP.NET 1.x, kelas CacheDependency disegel yang mencegah pengembang mendapatkan kelas mereka sendiri darinya. Dalam ASP.NET 2.0, batasan tersebut dihapus dan pengembang bebas mengembangkan dependensi cache kustom mereka sendiri. Kelas CacheDependency memungkinkan pembuatan dependensi cache kustom berdasarkan file, direktori, atau kunci cache.
Misalnya, kode di bawah ini membuat dependensi cache kustom baru berdasarkan file yang disebut stuff.xml yang terletak di akar aplikasi Web:
System.Web.Caching.CacheDependency dep = new
System.Web.Caching.CacheDependency(Server.MapPath("stuff.xml"));
Response.AddCacheDependency(dep);
Cache.Insert("key", "value");
Dalam skenario ini, ketika file stuff.xml berubah, item yang di-cache tidak valid.
Anda juga dapat membuat dependensi cache kustom menggunakan kunci cache. Dengan menggunakan metode ini, penghapusan kunci cache akan membatalkan data yang di-cache. Contoh berikut mengilustrasikan langkah-langkah ini:
// insert a value into cache that will serve
// as the cache key
Cache["CacheKey"] = "something";
// create an array of cache keys
string[] keys = new String[1];
keys[0] = "CacheKey";
CacheDependency dep = new CacheDependency(null, keys);
// insert an item into cache with a dependency on
// the above CacheDependency
Cache.Insert("Key", "Value", dep);
Untuk membatalkan validasi item yang disisipkan di atas, cukup hapus item yang dimasukkan ke dalam cache untuk bertindak sebagai kunci cache.
// Remove the cache item that serves as the cache key
Cache.Remove("CacheKey");
Perhatikan bahwa kunci item yang bertindak sebagai kunci cache harus sama dengan nilai yang ditambahkan ke array kunci cache.
Polling-Based Dependensi Cache SQL (Juga disebut dependensi Table-Based)
SQL Server 7 dan 2000 menggunakan model berbasis polling untuk dependensi cache SQL. Model berbasis polling menggunakan pemicu pada tabel database yang dipicu saat data dalam tabel berubah. Pemicu tersebut memperbarui bidang changeId dalam tabel pemberitahuan yang ASP.NET periksa secara berkala. Jika bidang changeId telah diperbarui, ASP.NET tahu bahwa data telah berubah dan membatalkan data yang di-cache.
Catatan
SQL Server 2005 juga dapat menggunakan model berbasis polling, tetapi karena model berbasis polling bukanlah model yang paling efisien, disarankan untuk menggunakan model berbasis kueri (dibahas nanti) dengan SQL Server 2005.
Agar dependensi cache SQL menggunakan model berbasis polling berfungsi dengan benar, tabel harus mengaktifkan pemberitahuan. Ini dapat dicapai secara terprogram menggunakan kelas SqlCacheDependencyAdmin atau dengan menggunakan utilitas aspnet_regsql.exe.
Baris perintah berikut mendaftarkan tabel Produk di database Northwind yang terletak pada instans SQL Server bernama dbase untuk dependensi cache SQL.
aspnet_regsql -S dbase -ed -d Northwind -E -et -t Products
Berikut ini adalah penjelasan tentang sakelar baris perintah yang digunakan dalam perintah di atas:
Sakelar Baris Perintah | Tujuan |
---|---|
Server -S | Menentukan nama server. |
-Ed | Menentukan bahwa database harus diaktifkan untuk dependensi cache SQL. |
-d database_name | Menentukan nama database yang harus diaktifkan untuk dependensi cache SQL. |
-E | Menentukan bahwa aspnet_regsql harus menggunakan autentikasi Windows saat menyambungkan ke database. |
-Et | Menentukan bahwa kami mengaktifkan tabel database untuk dependensi cache SQL. |
-t table_name | Menentukan nama tabel database yang akan diaktifkan untuk dependensi cache SQL. |
Catatan
Ada sakelar lain yang tersedia untuk aspnet_regsql.exe. Untuk daftar lengkapnya, jalankan aspnet_regsql.exe -? dari baris perintah.
Ketika perintah ini menjalankan perubahan berikut ini dilakukan pada database SQL Server:
- Tabel AspNet_SqlCacheTablesForChangeNotification ditambahkan. Tabel ini berisi satu baris untuk setiap tabel dalam database yang dependensi cache SQL-nya telah diaktifkan.
- Prosedur tersimpan berikut ini dibuat di dalam database:
AspNet_SqlCachePollingStoredProcedure | Mengkueri tabel AspNet_SqlCacheTablesForChangeNotification dan mengembalikan semua tabel yang diaktifkan untuk dependensi cache SQL dan nilai changeId untuk setiap tabel. Proc tersimpan ini digunakan untuk polling untuk menentukan apakah data telah berubah. |
---|---|
AspNet_SqlCacheQueryRegisteredTablesStoredProcedure | Mengembalikan semua tabel yang diaktifkan untuk dependensi cache SQL dengan mengkueri tabel AspNet_SqlCacheTablesForChangeNotification dan mengembalikan semua tabel yang diaktifkan untuk dependensi cache SQL. |
AspNet_SqlCacheRegisterTableStoredProcedure | Mendaftarkan tabel untuk dependensi cache SQL dengan menambahkan entri yang diperlukan dalam tabel pemberitahuan dan menambahkan pemicu. |
AspNet_SqlCacheUnRegisterTableStoredProcedure | Membatalkan pendaftaran tabel untuk dependensi cache SQL dengan menghapus entri dalam tabel pemberitahuan dan menghapus pemicunya. |
AspNet_SqlCacheUpdateChangeIdStoredProcedure | Updates tabel pemberitahuan dengan menaikkan changeId untuk tabel yang diubah. ASP.NET menggunakan nilai ini untuk menentukan apakah data telah berubah. Seperti yang ditunjukkan di bawah ini, proc tersimpan ini dijalankan oleh pemicu yang dibuat saat tabel diaktifkan. |
- Pemicu SQL Server yang disebut table_name_AspNet_SqlCacheNotification_Trigger dibuat untuk tabel. Pemicu ini menjalankan AspNet_SqlCacheUpdateChangeIdStoredProcedure saat INSERT, UPDATE, atau DELETE dilakukan pada tabel.
- Peran SQL Server yang disebut aspnet_ChangeNotification_ReceiveNotificationsOnlyAccess ditambahkan ke database.
Peran SQL Server aspnet_ChangeNotification_ReceiveNotificationsOnlyAccess memiliki izin EXEC ke AspNet_SqlCachePollingStoredProcedure. Agar model polling berfungsi dengan benar, Anda harus menambahkan akun proses Anda ke peran aspnet_ChangeNotification_ReceiveNotificationsOnlyAccess. Alat aspnet_regsql.exe tidak akan melakukan ini untuk Anda.
Mengonfigurasi dependensi SQL Cache Polling-Based
Ada beberapa langkah yang diperlukan untuk mengonfigurasi dependensi cache SQL berbasis polling. Langkah pertama adalah mengaktifkan database dan tabel seperti yang dibahas di atas. Setelah langkah tersebut selesai, konfigurasi lainnya adalah sebagai berikut:
- Mengonfigurasi file konfigurasi ASP.NET.
- Mengonfigurasi SqlCacheDependency
Mengonfigurasi File Konfigurasi ASP.NET
Selain menambahkan string koneksi seperti yang dibahas dalam modul sebelumnya, Anda juga harus mengonfigurasi <elemen cache> dengan <elemen sqlCacheDependency> seperti yang ditunjukkan di bawah ini:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<add name="Pubs"
connectionString="Data Source=(local);
Initial Catalog=pubs;Integrated Security=true;"
providerName="System.Data.SqlClient" />
</connectionStrings>
<system.web>
<caching>
<sqlCacheDependency enabled = "true" pollTime = "60000" >
<databases>
<add name="pubs" connectionStringName = "pubs" pollTime = "9000000" />
</databases>
</sqlCacheDependency>
</caching>
</system.web>
</configuration>
Konfigurasi ini memungkinkan dependensi cache SQL pada database pub . Perhatikan bahwa atribut pollTime dalam <elemen sqlCacheDependency> default ke 60000 milidetik atau 1 menit. (Nilai ini tidak boleh kurang dari 500 milidetik.) Dalam contoh ini, <elemen add> menambahkan database baru dan mengambil alih pollTime, mengaturnya ke 9000000 milidetik.
Mengonfigurasi SqlCacheDependency
Langkah selanjutnya adalah mengonfigurasi SqlCacheDependency. Cara termudah untuk mencapainya adalah dengan menentukan nilai untuk atribut SqlDependency dalam arahan @ Outcache sebagai berikut:
<%@ OutputCache duration="60"
VaryByParam="none" SqlDependency="pubs:authors" %>
Dalam arahan @ OutputCache di atas, dependensi cache SQL dikonfigurasi untuk tabel penulis di database pub . Beberapa dependensi dapat dikonfigurasi dengan memisahkannya dengan titik koma seperti:
<%@ OutputCache duration="60"
VaryByParam="none"
SqlDependency="database_name:table_name;database_name:table_name" %>
Metode lain untuk mengonfigurasi SqlCacheDependency adalah melakukannya secara terprogram. Kode berikut membuat dependensi cache SQL baru pada tabel penulis di database pub .
SqlCacheDependency dep = new SqlCacheDependency("pubs", "authors");
Salah satu manfaat menentukan dependensi cache SQL secara terprogram adalah Anda dapat menangani pengecualian apa pun yang mungkin terjadi. Misalnya, jika Anda mencoba menentukan dependensi cache SQL untuk database yang belum diaktifkan untuk pemberitahuan, pengecualian DatabaseNotEnabledForNotificationException akan dilemparkan. Dalam hal ini, Anda dapat mencoba mengaktifkan database untuk pemberitahuan dengan memanggil metode SqlCacheDependencyAdmin.EnableNotifications dan meneruskannya nama database.
Demikian juga, jika Anda mencoba menentukan dependensi cache SQL untuk tabel yang belum diaktifkan untuk pemberitahuan, TableNotEnabledForNotificationException akan dilemparkan. Anda kemudian dapat memanggil metode SqlCacheDependencyAdmin.EnableTableForNotifications yang meneruskannya dengan nama database dan nama tabel.
Sampel kode berikut menggambarkan cara mengonfigurasi penanganan pengecualian dengan benar saat mengonfigurasi dependensi cache SQL.
try {
SqlCacheDependency SqlDep = new
SqlCacheDependency("pubs", "authors");
} catch (DatabaseNotEnabledForNotificationException exDBDis) {
try {
SqlCacheDependencyAdmin.EnableNotifications("pubs");
} catch (UnauthorizedAccessException exPerm) {
Response.Redirect("ErrorPage.htm");
}
} catch (TableNotEnabledForNotificationException exTabDis) {
try {
SqlCacheDependencyAdmin.EnableTableForNotifications("pubs",
"authors");
} catch (System.Data.SqlClient.SqlException exc) {
Response.Redirect("ErrorPage.htm");
}
} finally {
Cache.Insert("SqlSource", Source1, SqlDep);
}
Informasi Selengkapnya: https://msdn.microsoft.com/library/t9x04ed2.aspx
Query-Based Dependensi SQL Cache (Hanya SQL Server 2005)
Saat menggunakan SQL Server 2005 untuk dependensi cache SQL, model berbasis polling tidak diperlukan. Saat digunakan dengan SQL Server 2005, dependensi cache SQL berkomunikasi langsung melalui koneksi SQL ke instans SQL Server (tidak diperlukan konfigurasi lebih lanjut) menggunakan pemberitahuan kueri SQL Server 2005.
Cara paling sederhana untuk mengaktifkan pemberitahuan berbasis kueri adalah dengan melakukannya secara deklaratif dengan mengatur atribut SqlCacheDependency dari objek sumber data ke CommandNotification dan mengatur atribut EnableCaching ke true. Dengan menggunakan metode ini, tidak ada kode yang diperlukan. Jika hasil perintah yang dijalankan terhadap perubahan sumber data, perintah tersebut akan membatalkan data cache.
Contoh berikut mengonfigurasi kontrol sumber data untuk dependensi cache SQL:
<asp:SqlDataSource ID="ProductList" runat="server"
ConnectionString="<%$ ConnectionStrings:Northwind %>"
EnableCaching="true"
SqlCacheDependency="CommandNotification"
SelectCommand="SELECT * FROM [Products]" />
Dalam hal ini, jika kueri yang ditentukan dalam SelectCommand mengembalikan hasil yang berbeda dari yang semula, hasil yang di-cache tidak valid.
Anda juga dapat menentukan bahwa semua sumber data Anda diaktifkan untuk dependensi cache SQL dengan mengatur atribut SqlDependency dari arahan @ OutputCache ke CommandNotification. Contoh di bawah ini menggambarkan hal ini.
<%@ OutputCache SqlDependency="CommandNotification"
duration="60" VaryByParam="none" %>
Catatan
Untuk informasi selengkapnya tentang pemberitahuan kueri di SQL Server 2005, lihat SQL Server Books Online.
Metode lain untuk mengonfigurasi dependensi cache SQL berbasis kueri adalah melakukannya secara terprogram menggunakan kelas SqlCacheDependency. Sampel kode berikut menggambarkan bagaimana hal ini dicapai.
string sql = "SELECT ProductName, ProductID FROM Products";
SqlConnection conn = new
SqlConnection(ConfigurationManager.ConnectionStrings["Northwind"].ConnectionString);
SqlCommand cmd = new SqlCommand(sql, conn);
SqlCacheDependency dep = new SqlCacheDependency(cmd);
Response.AddCacheDependency(dep);
Informasi Selengkapnya: https://msdn.microsoft.com/library/default.asp?url=/library/enus/dnvs05/html/querynotification.asp
Substitusi Pasca-Cache
Penembolokan halaman dapat secara dramatis meningkatkan performa aplikasi Web. Namun, dalam beberapa kasus Anda memerlukan sebagian besar halaman untuk di-cache dan beberapa fragmen dalam halaman menjadi dinamis. Misalnya, jika Anda membuat halaman berita yang sepenuhnya statis untuk periode waktu yang ditetapkan, Anda dapat mengatur seluruh halaman untuk di-cache. Jika Anda ingin menyertakan banner iklan berputar yang berubah pada setiap permintaan halaman, maka bagian halaman yang berisi iklan harus dinamis. Untuk memungkinkan Anda menyimpan halaman tetapi mengganti beberapa konten secara dinamis, Anda dapat menggunakan ASP.NET substitusi pasca-cache. Dengan substitusi pasca-cache, seluruh halaman di-cache dengan bagian tertentu yang ditandai sebagai dikecualikan dari penembolokan. Dalam contoh banner iklan, kontrol AdRotator memungkinkan Anda memanfaatkan substitusi pasca-cache sehingga iklan dibuat secara dinamis untuk setiap pengguna dan untuk setiap refresh halaman.
Ada tiga cara untuk menerapkan substitusi pasca-cache:
- Secara deklaratif, menggunakan kontrol Substitusi.
- Secara terprogram, menggunakan API kontrol Substitusi.
- Secara implisit, menggunakan kontrol AdRotator.
Kontrol Penggantian
Kontrol ASP.NET Substitusi menentukan bagian dari halaman cache yang dibuat secara dinamis daripada di-cache. Anda menempatkan kontrol Substitusi di lokasi di halaman tempat Anda ingin konten dinamis muncul. Pada durasi, kontrol Substitusi memanggil metode yang Anda tentukan dengan properti MethodName. Metode harus mengembalikan string, yang kemudian menggantikan konten kontrol Substitusi. Metode harus merupakan metode statis pada kontrol Halaman atau UserControl yang berisi. Menggunakan kontrol substitusi menyebabkan cache sisi klien diubah ke cacheabilitas server, sehingga halaman tidak akan di-cache pada klien. Ini memastikan bahwa permintaan di masa mendatang ke halaman memanggil metode lagi untuk menghasilkan konten dinamis.
API Substitusi
Untuk membuat konten dinamis untuk halaman yang di-cache secara terprogram, Anda dapat memanggil metode WriteSubstitution di kode halaman Anda, meneruskannya nama metode sebagai parameter. Metode yang menangani pembuatan konten dinamis mengambil satu parameter HttpContext dan mengembalikan string. String pengembalian adalah konten yang akan diganti di lokasi tertentu. Keuntungan memanggil metode WriteSubstitution alih-alih menggunakan kontrol Substitusi secara deklaratif adalah Anda dapat memanggil metode objek arbitrer apa pun daripada memanggil metode statis Halaman atau objek UserControl.
Memanggil metode WriteSubstitution menyebabkan cacheability sisi klien diubah ke cacheability server, sehingga halaman tidak akan di-cache pada klien. Ini memastikan bahwa permintaan di masa mendatang ke halaman memanggil metode lagi untuk menghasilkan konten dinamis.
Kontrol AdRotator
Kontrol server AdRotator menerapkan dukungan untuk substitusi pasca-cache secara internal. Jika Anda menempatkan kontrol AdRotator di halaman Anda, itu akan merender iklan unik pada setiap permintaan, terlepas dari apakah halaman induk di-cache. Akibatnya, halaman yang menyertakan kontrol AdRotator hanya di-cache sisi server.
Kelas ControlCachePolicy
Kelas ControlCachePolicy memungkinkan kontrol terprogram penembolokan fragmen menggunakan kontrol pengguna. ASP.NET menyematkan kontrol pengguna dalam instans BasePartialCachingControl . Kelas BasePartialCachingControl mewakili kontrol pengguna yang mengaktifkan penembolokan output.
Saat Anda mengakses properti BasePartialCachingControl.CachePolicy dari kontrol PartialCachingControl , Anda akan selalu menerima objek ControlCachePolicy yang valid. Namun, jika Anda mengakses properti UserControl.CachePolicy dari kontrol UserControl , Anda menerima objek ControlCachePolicy yang valid hanya jika kontrol pengguna sudah dibungkus oleh kontrol BasePartialCachingControl. Jika tidak dibungkus, objek ControlCachePolicy yang dikembalikan oleh properti akan melemparkan pengecualian ketika Anda mencoba memanipulasinya karena tidak memiliki BasePartialCachingControl terkait. Untuk menentukan apakah instans UserControl mendukung penembolokan tanpa menghasilkan pengecualian, periksa properti SupportsCaching .
Menggunakan kelas ControlCachePolicy adalah salah satu dari beberapa cara Anda dapat mengaktifkan penembolokan output. Daftar berikut ini menjelaskan metode yang dapat Anda gunakan untuk mengaktifkan penembolokan output:
- Gunakan arahan @ OutputCache untuk mengaktifkan penembolokan output dalam skenario deklaratif.
- Gunakan atribut PartialCachingAttribute untuk mengaktifkan penembolokan untuk kontrol pengguna dalam file code-behind.
- Gunakan kelas ControlCachePolicy untuk menentukan pengaturan cache dalam skenario terprogram di mana Anda bekerja dengan instans BasePartialCachingControl yang telah diaktifkan cache menggunakan salah satu metode sebelumnya dan dimuat secara dinamis menggunakan metode System.Web.UI.TemplateControl.LoadControl .
Instans ControlCachePolicy dapat berhasil dimanipulasi hanya antara tahap Init dan PreRender dari siklus hidup kontrol. Jika Anda mengubah objek ControlCachePolicy setelah fase PreRender, ASP.NET melemparkan pengecualian karena setiap perubahan yang dilakukan setelah kontrol dirender tidak dapat benar-benar memengaruhi pengaturan cache (kontrol di-cache selama tahap Render). Akhirnya, instans kontrol pengguna (dan karena itu objek ControlCachePolicy-nya) hanya tersedia untuk manipulasi terprogram ketika benar-benar dirender.
Perubahan pada Konfigurasi Penembolokan - <Elemen penembolokan>
Ada beberapa perubahan pada konfigurasi penembolokan di ASP.NET 2.0. Elemen <penembolokan> baru di ASP.NET 2.0 dan memungkinkan Anda membuat perubahan konfigurasi penembolokan dalam file konfigurasi. Atribut berikut tersedia.
Elemen | Deskripsi |
---|---|
Cache | Elemen opsional. Menentukan pengaturan cache aplikasi global. |
outputCache | Elemen opsional. Menentukan pengaturan output-cache di seluruh aplikasi. |
outputCacheSettings | Elemen opsional. Menentukan pengaturan output-cache yang dapat diterapkan ke halaman dalam aplikasi. |
sqlCacheDependency | Elemen opsional. Mengonfigurasi dependensi cache SQL untuk aplikasi ASP.NET. |
<Elemen cache>
Atribut berikut tersedia dalam <elemen cache> :
Attribut | Deskripsi |
---|---|
disableMemoryCollection | Atribut Boolean opsional. Mendapatkan atau menetapkan nilai yang menunjukkan apakah kumpulan memori cache yang terjadi ketika komputer berada di bawah tekanan memori dinonaktifkan. |
disableExpiration | Atribut Boolean opsional. Mendapatkan atau menetapkan nilai yang menunjukkan apakah kedaluwarsa cache dinonaktifkan. Ketika dinonaktifkan, item yang di-cache tidak kedaluwarsa dan pemulungan latar belakang item cache yang kedaluwarsa tidak terjadi. |
privateBytesLimit | Atribut Int64 opsional. Mendapatkan atau menetapkan nilai yang menunjukkan ukuran maksimum byte privat aplikasi sebelum cache mulai membersihkan item yang kedaluwarsa dan mencoba untuk mengklaim kembali memori. Batas ini mencakup memori yang digunakan oleh cache serta overhead memori normal dari aplikasi yang sedang berjalan. Pengaturan nol menunjukkan bahwa ASP.NET akan menggunakan heuristiknya sendiri untuk menentukan kapan harus mulai mengklaim kembali memori. |
percentagePhysicalMemoryUsedLimit | Atribut Int32 opsional. Mendapatkan atau menetapkan nilai yang menunjukkan persentase maksimum memori fisik komputer yang dapat dikonsumsi oleh aplikasi sebelum cache mulai membersihkan item yang kedaluwarsa dan mencoba untuk mengklaim kembali memori Penggunaan memori ini mencakup memori yang digunakan oleh cache serta penggunaan memori normal dari aplikasi yang sedang berjalan. Pengaturan nol menunjukkan bahwa ASP.NET akan menggunakan heuristiknya sendiri untuk menentukan kapan harus mulai mengklaim kembali memori. |
privateBytesPollTime | Atribut TimeSpan opsional. Mendapatkan atau menetapkan nilai yang menunjukkan interval waktu antara polling untuk penggunaan memori byte privat aplikasi. |
Elemen <outputCache>
Atribut berikut tersedia untuk <elemen outputCache> .
Attribut | Deskripsi |
---|---|
enableOutputCache | Atribut Boolean opsional. Mengaktifkan/menonaktifkan singgahan output halaman. Jika dinonaktifkan, tidak ada halaman yang di-cache terlepas dari pengaturan terprogram atau deklaratif. Nilai defaultnya adalah true. |
enableFragmentCache | Atribut Boolean opsional. Mengaktifkan/menonaktifkan cache fragmen aplikasi. Jika dinonaktifkan, tidak ada halaman yang di-cache terlepas dari @ OutputCache direktif atau profil penembolokan yang digunakan. Menyertakan header kontrol cache yang menunjukkan bahwa server proksi upstream serta klien browser tidak boleh mencoba menyimpan output halaman. Nilai defaultnya adalah false. |
sendCacheControlHeader | Atribut Boolean opsional. Mendapatkan atau menetapkan nilai yang menunjukkan apakah header cache-control:private dikirim oleh modul cache output secara default. Nilai defaultnya adalah false. |
omitVaryStar | Atribut Boolean opsional. Mengaktifkan/menonaktifkan pengiriman header Http "Vary: </strong>" dalam respons. Dengan pengaturan default false, header "*Vary: *" dikirim untuk halaman cache output. Ketika header Vary dikirim, itu memungkinkan versi yang berbeda untuk di-cache berdasarkan apa yang ditentukan di header Vary. Misalnya, Vary:User-Agents akan menyimpan versi halaman yang berbeda berdasarkan agen pengguna yang mengeluarkan permintaan. Nilai defaultnya adalah **false. |
Elemen <outputCacheSettings>
Elemen <outputCacheSettings> memungkinkan pembuatan profil cache seperti yang dijelaskan sebelumnya. Satu-satunya elemen turunan untuk <elemen outputCacheSettings> adalah <elemen outputCacheProfiles> untuk mengonfigurasi profil cache.
<Elemen sqlCacheDependency>
Atribut berikut tersedia untuk <elemen sqlCacheDependency> .
Attribut | Deskripsi |
---|---|
diaktifkan | Atribut Boolean yang diperlukan. Menunjukkan apakah perubahan sedang dijajaki atau tidak. |
pollTime | Atribut Int32 opsional. Mengatur frekuensi yang dengannya SqlCacheDependency melakukan polling tabel database untuk perubahan. Nilai ini sesuai dengan jumlah milidetik antara polling berturut-turut. Ini tidak dapat diatur ke kurang dari 500 milidetik. Nilai defaultnya adalah 1 menit. |
Informasi Lebih Lanjut
Ada beberapa informasi tambahan yang harus Anda ketahui mengenai konfigurasi cache.
Jika batas byte privat proses pekerja tidak ditetapkan, cache akan menggunakan salah satu batas berikut:
- x86 2GB: 800MB atau 60% RAM fisik, mana yang kurang
- x86 3GB: 1800MB atau 60% RAM fisik, mana yang kurang
- x64: 1 terabyte atau 60% RAM fisik, mana yang kurang
Jika batas byte privat proses pekerja dan <cache privateBytesLimit/> diatur, cache akan menggunakan minimum keduanya.
Sama seperti dalam 1.x, kami menghilangkan entri cache dan memanggil GC. Kumpulkan karena dua alasan:
- Kami sangat dekat dengan batas byte privat
- Memori yang tersedia mendekati atau kurang dari 10%
Anda dapat secara efektif menonaktifkan pemangkasan dan cache untuk kondisi memori yang tersedia rendah dengan mengatur <persentase cachePhysicalMemoryUseLimit/> ke 100.
Tidak seperti 1.x, 2.0 akan menangguhkan pemangkasan dan mengumpulkan panggilan jika GC terakhir. Collect tidak mengurangi byte privat atau ukuran tumpukan terkelola lebih dari 1% dari batas memori (cache).
Lab1: Dependensi Cache Kustom
Buat situs Web baru.
Tambahkan file XML baru yang disebut cache.xml dan simpan ke akar aplikasi Web.
Tambahkan kode berikut ke metode Page_Load di code-behind default.aspx:
System.Web.Caching.CacheDependency dep = new System.Web.Caching.CacheDependency(Server.MapPath("cache.xml")); Response.AddCacheDependency(dep); Cache.Insert("time", DateTime.Now.ToString()); Response.Write(Cache["time"]);
Tambahkan yang berikut ini ke bagian atas default.aspx dalam tampilan sumber:
<%@ OutputCache Duration="240" VaryByParam="None" %>
Telusuri Default.aspx. Bagaimana waktunya?
Refresh browser. Bagaimana waktunya?
Buka cache.xml dan tambahkan kode berikut:
<anElement></anElement>
Simpan cache.xml.
Refresh browser Anda. Bagaimana waktunya?
Jelaskan mengapa waktu diperbarui alih-alih menampilkan nilai yang di-cache sebelumnya:
Lab 2: Menggunakan Dependensi Cache Polling-Based
Lab ini menggunakan proyek yang Anda buat di modul sebelumnya yang memungkinkan pengeditan data di database Northwind melalui kontrol GridView dan DetailsView.
Buka proyek di Visual Studio 2005.
Jalankan utilitas aspnet_regsql terhadap database Northwind untuk mengaktifkan database dan tabel Produk. Gunakan perintah berikut dari Prompt Perintah Visual Studio:
aspnet_regsql -S server -ed -d Northwind -E -et -t Products
Tambahkan yang berikut ini ke file web.config Anda:
<caching> <sqlCacheDependency enabled = "true" pollTime = "60000" > <databases> <add name="Northwind" connectionStringName = "Northwind" pollTime = "9000000" /> </databases> </sqlCacheDependency> </caching>
Tambahkan formulir web baru yang disebut showdata.aspx.
Tambahkan direktif @ outputcache berikut ke halaman showdata.aspx:
<%@ OutputCache SqlDependency="Northwind:Products" Duration="480" VaryByParam="None"%>
Tambahkan kode berikut ke Page_Load showdata.aspx:
Response.Write(DateTime.Now.ToString() + "<br><br>");
Tambahkan kontrol SqlDataSource baru ke showdata.aspx dan konfigurasikan untuk menggunakan koneksi database Northwind. Klik Berikutnya.
Pilih kotak centang ProductName dan ProductID dan klik Berikutnya.
Klik Selesai.
Tambahkan GridView baru ke halaman showdata.aspx.
Pilih SqlDataSource1 dari menu dropdown.
Simpan dan telusuri showdata.aspx. Catat waktu yang ditampilkan.