Misalnya, situs web memiliki kontrol pengguna Header.ascx. Setiap halaman memanggil kontrol ini sebagai "header halaman". Kontrol pengguna ini dapat di-cache secara langsung untuk mengirimkan kinerja nama pengguna. Nama login, jadi Anda tidak bisa langsung menggunakan metode caching berikut:
<% @ OutputCache Duration = " 86400 " VaryByParam = " Tidak Ada " %>
Saat ini, Anda dapat menggunakan metode "caching halaman berdasarkan string khusus", sebagai berikut:
<%@ OutputCache Duration="86400" VaryByParam="None" VaryByCustom="HeaderPageKey" %>
Kemudian ganti metode GetVaryByCustomString di kelas global
public override string GetVaryByCustomString (konteks HttpContext, string custom)
{
if(kustom=="HeaderPageKey")
{
//Kontrol Cache Header.ascx
if(konteks.Permintaan.Diautentikasi)
{
kembalikan konteks.Pengguna.Identitas.Nama;
}
kalau tidak
{
kembalikan "NoAuthenticated_User";
}
}
return base.GetVaryByCustomString (konteks, khusus);
}
Jika pengguna tidak login, maka satu versi akan di-cache. Jika pengguna sudah login, maka versi lain akan di-cache berdasarkan nama login. Haha, satu versi di-cache untuk setiap pengguna larutan.
Untuk teknologi caching di atas, silakan merujuk ke http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cpguide/html/cpconcachingversionsofpagebasedonparameters.asp
Selain itu, metode caching ini juga digunakan di MSPetShop3.0 , versi berbeda di-cache berdasarkan Request.Querystring dan apakah Anda masuk. Namun, cache ini tampaknya tidak diaktifkan secara default.
Sumber: kaka.net