Bu makalede, parça asp önbelleğe alma uygulamak gösterilmiştir.NET. Parça aslında Web formun kod parçaları doğrudan önbelleğe almaz; parça, tek tek kullanıcı denetimlerini (.ascx) Web form önbelleği için başvurur. Her kullanıcı denetimi, bağımsız önbellek süreleri ve uygulamaları, nasıl önbelleğe alma davranışını uygulanmasını sağlayabilirsiniz. Bu makaledeki örnek kod, bu işlevselliği elde etmek verilmektedir.
Parça, bir sayfanın yalnızca bir alt kümesini önbelleğe almak gerektiğinde kullanışlıdır. Gezinti çubukları, üstbilgi ve altbilgileri parça için iyi adaylardır.
Gereksinimleri
- Microsoft Windows 2000
- Microsoft Internet Information Server (IIS)
- Microsoft.net Framework
- ASP.NET
Bir Microsoft ASP.C# kullanarak ASP.NET
Aşağıdaki adımlarda, nasıl yeni bir ASP gösterilmektedir.FragmentCache adlı ASP.
- Microsoft Visual Studio açın.NET
- Dosya menüsünde Yeni' nin üzerine ve sonra projeyitıklatın.
- New Project iletişim kutusu Visual C# projeleriProje türlerialtında tıklatın ve asp 'ı tıklatın.net Web uygulamaŞablonlaraltında.
- Ad kutusuna yazın. FragmentCache. Konum kutusunda, uygun sunucuyu seçin. Yerel sunucu kullanıyorsanız, sunucu adı http://localhost bırakabilirsiniz.
Kullanıcı denetimleri oluşturma
Bu bölümde, örnek kodları ve açıklamaları bu makalede kullanacak her kullanıcı denetimi sağlar. Kopyalama ve açıklandığı gibi ilişkili .ascx dosya ve arkadaki kod sayfasına örnek kodu yapıştırın.
Kullanıcı denetimi 1 (FragmentCtrl1.ascx)
FragmentCtrl1.ascx, aşağıdaki kullanıcı denetimi çok basittir. FragmentCtrl1.ascx süresi madde önbellek girdisi oluştuğunu yazar. Tüm bu makale için oluşturulan denetimleri gibi ayarlar ve ilgili davranışları sonraki bölümlerde zamanında ayırt kolaylaştırmak denetimin temel açıklaması sağlanır.
- Visual Studio.net, yeni bir kullanıcı denetimi aşağıdaki gibi oluşturun:
- Solution Explorer'da Proje düğümünü sağ tıklatın, Ekle' nin üzerine ve sonra tıklatın Web kullanıcı denetimi Ekle.
- Denetimi FragmentCtrl1.ascx olarak adlandırın ve sonra da Aç' ı tıklatın.
- Design sekmesi seçili olduğundan emin olun. Tıklatın ve Web Form Etiket denetimini toolbox'ın Web Forms bölümünden sürükleyin ve Label denetimi sayfaya bırakın.
- Etiket denetimi tıklatın. Özellikler bölmesinde Visual Studio.net tümleşik geliştirme ortamı (IDE) türü CacheEntryTimeID özelliği ve Text özelliğini boş bırakın.
- html görünümüne geçin ve aşağıdaki @ OutputCache yönergesini sayfanın üstüne ekleyin:
<%@ OutputCache Duration="40" VaryByParam="none"%>
- .Ascx dosyasını sağ tıklatın ve arkadaki kod sayfası kaynağını görüntülemek için Kod Görüntüle seçeneğini tıklatın.
- CacheEntryTime etiketin Text özelliğini ayarlar Page_Load olay aşağıdaki kodu ekleyin:
private void Page_Load(object sender, System.EventArgs e)
{
CacheEntryTime.Text ="FragmentCtrl1: " + DateTime.Now.TimeOfDay.ToString();
}
Kullanıcı denetimi 2 (FragmentCtrl2.ascx)
Birden çok kullanıcı denetimleri aynı sayfada bağımsız davranışlar olabilir göstermek için farklı bir önbellek süresi sadece ilk denetim başka bir sürümünü oluşturabilirsiniz, ancak bu bölümde ikinci denetimin FragmentCtrl2.ascx daha ilginç hale getirir. FragmentCtrl2.ascx,
VaryByControl özniteliği tanıtmak için kullanılır.
VaryByControl farklı önbellek girdileri belirlenen denetim değerleri temel alınarak yapılmasına izin verir. Bu işlevsellik sonraki bölümde zamanında çok daha temiz olarak yapılır.
- Visual Studio.net, yeni bir kullanıcı denetimi aşağıdaki gibi oluşturun:
- Solution Explorer'da Proje düğümünü sağ tıklatın, Ekle' nin üzerine ve sonra tıklatın Web kullanıcı denetimi Ekle.
- Denetimi FragmentCtrl2.ascx olarak adlandırın ve sonra da Aç' ı tıklatın.
- Design sekmesi seçili olduğundan emin olun. Tıklatın ve Web Form Etiket denetimini toolbox'ın Web Forms bölümünden sürükleyin ve sonra bir Label denetimi sayfaya bırakın.
- Etiket denetimi tıklatın. Özellikler bölmesinde yazın CacheEntryTimeID özelliği ve Text özelliğini boş bırakın.
- Etiket denetimi doğrudan sonra imleci yerleştirin ve sayfadaki bir sonraki satıra geçmek için enter tuşuna basın.
- Tıklatın ve Web formu RadioButtonList denetimini toolbox'ın Web Forms bölümünden sürükleyin ve sayfaya sürükleyip bırakın. RadioButtonList denetim kendine sonra Etiket denetimi çizgisinde görünmelidir.
- RadioButtonList denetimi tıklatın. Özellikler bölmesinde yazın MyRadioButtonListkimlik özelliği.
- Özellikler bölmesinde Items MyRadioButtonList denetimi içinkoleksiyonutıklatın bulup koleksiyonuyanında görüntülenen üç nokta (...) düğmesini tıklatın.
- Öğesini Collection Editor penceresinde öğesini üyeleri aşağıdaki gibi ekleyin:
- ÜyeEkle' yi tıklatın.
- Öğesini özellikler bölümünde, metin ve değeriEvetolarak ayarlayın ve SeçilenTrueolarak ayarlayın.
- Üyeleriyeniden Ekle ' yi tıklatın.
- Öğesini özellikler bölümünde, metin ve değeriHayırolarak ayarlayın ve SeçiliFalseolarak ayarlayın.
- Üyeler, son bir kez Ekle'yi tıklatın.
- Öğesini özellikleri bölümünde, metin ve değerbelkiiçin ayarlamak ve SeçiliFalseolarak ayarlayın.
- Tasarım görünümünde .ascx dosyasına dönmek için Tamam ' ı tıklatın. Üç radyo düğmeleri göründü?üne RadioButtonList denetiminde bulunan: Evet, Hayırve belki de.
- Doğrudan RadioButtonList denetim ve sayfadaki bir sonraki satıra geçmek için enter tuşuna basın sonra imleç konumu.
- Tıklatın ve Web formu Düğme denetimini toolbox'ın Web Forms bölümünden sürükleyin ve sayfaya sürükleyip bırakın. Düğme denetimi kendine RadioButtonList denetiminin sonunda çizgisinde görünmelidir.
- Düğme denetimi tıklatın. Özellikler bölmesinde yazın GönderText özelliğinde.
- html görünümüne geçin ve aşağıdaki @ OutputCache yönergesini sayfanın üstüne ekleyin:
<%@ OutputCache Duration="60" VaryByParam="none" VaryByControl="MyRadioButtonList"%>
- .Ascx dosyasını sağ tıklatın ve arkadaki kod sayfası kaynağını görüntülemek için Kod Görüntüle seçeneğini tıklatın.
- CacheEntryTime etiketin Text özelliğini ayarlar Page_Load olay aşağıdaki kodu ekleyin:
private void Page_Load(object sender, System.EventArgs e)
{
CacheEntryTime.Text = "FragmentCtrl2: " + DateTime.Now.TimeOfDay.ToString();
}
Kullanıcı denetimleri içermesi için Web formu oluşturma
Şimdi, yeni geliştirilen kullanıcı denetimi içeren Web (.aspx) formu oluşturabilirsiniz. Web formu oluşturmak için aşağıdaki adımları izleyin:
- Projenizi Visual Studio FragmentCaching.aspx adlı yeni bir Web formu ekleyin.net aşağıdaki gibi:
- Solution Explorer'da Proje düğümünü sağ tıklatın, Ekle' nin üzerine ve sonra tıklatın Bir Web formu ekleyin.
- Web formu FragmentCaching.aspx olarak adlandırın ve sonra Aç' ı tıklatın.
- Design sekmesi seçili olduğundan emin olun. Tıklatın ve Web Form Etiket denetimini toolbox'ın Web Forms bölümünden sürükleyin ve sayfaya sürükleyip bırakın.
- Etiket denetimi tıklatın. Özellikler bölmesinde yazın SaatID özelliği ve Text özelliğini boş bırakın.
- Doğrudan Etiket denetimi ve sayfadaki bir sonraki satıra geçmek için enter tuşuna basın sonra imleç konumu.
- FragmentCtrl1.ascx sürükleyip bir satırında Label denetimi sonra kendisi tarafından yerleştirilmiş, Web formunun üzerine bırakın. Doğrudan denetim sonra imleci yerleştirin ve sayfadaki bir sonraki satıra geçmek için enter tuşuna basın.
- FragmentCtrl2.ascx sürükleyin ve FragmentCtrl1.ascx sonra bir satırda kendisi tarafından yerleştirilmiş emin Web Form üzerine sürükleyip bırakın.
- html View'de Web formu aşağıdaki koda benzer görünmelidir:
<%@ Page language ="c#" Codebehind="FragmentCaching.aspx.cs"
AutoEventWireup="false" Inherits="FragmentCache.FragmentCaching" %>
<%@ Register TagPrefix="uc1" TagName="FragmentCtrl1" Src="FragmentCtrl1.ascx" %>
<%@ Register TagPrefix="uc1" TagName="FragmentCtrl2" Src="FragmentCtrl2.ascx" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<meta name="GENERATOR" Content="Microsoft Visual Studio 7.0">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript (ECMAScript)">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body>
<form id="FragmentCaching" method="post" runat="server">
<P>
WebForm Time:
<asp:Label id="Time" runat="server" ForeColor="Blue"></asp:Label>
</P>
<P>
<uc1:FragmentCtrl1 id="FragmentCtrl11" runat="server">
</uc1:FragmentCtrl1>
</P>
<P>
<uc1:FragmentCtrl2 id="FragmentCtrl21" runat="server">
</uc1:FragmentCtrl2>
</P>
</form>
</body>
</HTML>
Not: denetimlerin içine yerleştirilir emin olun - .Aspx dosyasını sağ tıklatın ve Kod Görüntüle arkadaki kod sayfası kaynağını görüntülemek için tıklatın.
- Zaman etiketin Text özelliğini ayarlar Page_Load olay aşağıdaki kodu ekleyin:
private void Page_Load(object sender, System.EventArgs e)
{
Time.Text = "WebFormTime: " + DateTime.Now.TimeOfDay.ToString();
}
- Dosya menüsünden kullanıcı denetimleri, Web formu ve diğer ilişkili proje dosyalarını kaydetmek için Tümünü Kaydet'i tıklatın.
- Visual Studio Build menüsünden.net tümleşik geliştirme ortamı (IDE), proje oluşturmak için Oluştur ' u tıklatın.
Örneği çalıştırmak
Bu bölümde, önbelleğe alma davranışını törenine zamanında kodunu görüntülemek gösterilmiştir ve neden kodu yaptığı biçimde yapar kısaca açıklar.
- Visual Studio.net IDE Solution Explorer'da, FragmentCaching.aspx Web formu sağ tıklatın ve kod çalıştırmak için tarayıcıda görüntüle seçeneğini tıklatın.
- Tarayıcıdan sayfa görüntülendikten sonra sayfayı sağ tıklatın ve sonra sayfayı Yenile Yenile ' yi tıklatın. Visual Studio için harici bir tarayıcı sayfası görüntülüyorsanız, sayfayı yenilemek için F5 tuşuna da basabilirsiniz.NET IDE.
Web formu üzerindeki saat güncelleştirildi, ancak kullanıcı denetimleri, ilişkili önbellek girdisi zaman yapıldığı zaman görüntülenmeye devam dikkat edin. - İkinci denetim, Gönder' i tıklatın. Denetim güncelleştirilmiş bir kez görüntülendiğine dikkat edin. RadioButtonList denetim başvuran kullanıcı denetimi için VaryByControl özniteliği ayarı yanıt budur.
- Hayır' ı tıklatın ve yeniden Gönder ' i tıklatın. Zaman yeniden kullanıcı denetiminin görüntüsünü güncelletirilir. Bunun nedeni yeni bir önbellek girdisi yok bu değer ayarı esas alınarak denetim yapılır.
Belki seçeneği dışında bu adımı yineleyin. Aynı davranışı konusuna bakın. - Evet' i tıklatın ve yeniden Gönder ' i tıklatın. Hayır ve belki seçenekleriyle bu işlemi yineleyin. Bu seçimler denetim için önbelleğe alınmış ve önceki önbellek girdisi zaman görüntüleyeceğini dikkat edin. Geçen süre ayarının @ OutputCache yönergesini 's Gönder ' i tıklatın, kullanıcı denetiminin her RadioButtonList denetimi için belirli bir değer seçim için güncelleştirilir.
Not: tüm olası ayarlar ve parça senaryoları kapsayacak şekilde bu makalenin amacı değildir. Daha fazla bilgi için bkz:
Başvurular Bu makalenin sonundaki bölümü.
Sorun giderme
- Çıktıyı önbelleğe alınmış bir kullanıcı denetimi programatik olarak de?i?tirmek çalışmayın. Önbellek girdisi oluşmadan önce ilk kez çalıştırdığınızda denetimi yalnızca dinamik olarak oluşturulmuş olmasıdır. Denetim süresi dolana kadar çıktı önbelleği tüm isteklerini karşılar.
- Web kullanıcı denetimleri barındırılan Form kullanıcı denetimleri süre süreleri uzun çıkış önbelleğe alma süresi varsa, Web Form ayarı denetimlerini önbelleğe alma davranışını belirlemesi nedeniyle.
asp hakkında ek bilgi için.Önbelleğe alma net, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
307225
(http://support.microsoft.com/kb/307225/EN-US/
)
INFO: ASP.net önbellek genel bakış