Cum se efectuează Fragment cache în ASP.NET utilizând Visual C#.NET

Traduceri articole Traduceri articole
ID articol: 308378 - View products that this article applies to.
Măriți totul | Reduceți totul

În această pagină

REZUMAT

Acest articol arată cum să pună în aplicare cache de fragmente în ASP.NET. Cache de fragmente nu fapt cache fragmente de cod un formular Web direct; cache de fragmente se referă la legarea controalelor utilizator individual (.ascx) într-un formular Web. Fiecare control de utilizator poate avea durate de cache-ul independent și implementări de cum comportamentul cache va fi aplicată. Codul e?antionului în acest articol ilustrează modul de a realiza această funcționalitate.

Cache de fragmente este utilă atunci când aveți nevoie pentru a cache doar un subset de pagină. Bare de navigare, antet și subsoluri sunt buni candidați pentru cache de fragmente.

Cerin?ele

  • Microsoft Windows 2000
  • Microsoft Internet Information Server (IIS)
  • Microsoft .NET Framework
  • ASP.NET

Creați un ASP.NET Web cerere, folosind C#.NET

Pașii de mai jos demonstrează cum se creează un nou ASP.NET Web cerere numit FragmentCache.
  1. Deschideți Microsoft Visual Studio .NET
  2. Din meniul Fișier , indicați către nou, și apoi faceți clic pe proiectul.
  3. În casetă de dialog Nou proiect , faceți clic pe Visual C# proiecte sub Tipuri de proiect, și apoi faceți clic pe ASP.NET Web cerere în șabloane.
  4. În caseta Nume , tastați FragmentCache. În caseta locație , selectați serverul corespunzătoare. Dacă utilizați server local, puteți lăsa nume de sign-in serverului ca http://localhost.

Creați controale utilizator

Această secțiune oferă mostre de cod și explicații pentru fiecare control de utilizator care se va utiliza în acest articol. Posibilitatea să copiați și lipiți codul e?antionului în pagina de fișier și în spatele codul de .ascx asociate descris.

Controlul 1 (FragmentCtrl1.ascx)

Următorul control utilizator, FragmentCtrl1.ascx, este foarte simplu. FragmentCtrl1.ascx scrie la momentul că intrarea în cache pentru elementul apare. Ca cu toate controalele care sunt create de acest articol, se furnizează o descriere bază de control pentru a face mai ușor pentru a distinge setările și comportamente asociate la marcă de timp de execuție în secțiunile mai târziu.
  1. În Visual Studio .NET, creați un control nou utilizator după cum urmează:
    1. În solu?ie de Explorer, faceți clic dreapta pe nodul de proiect, punctul de Adăugareși apoi faceți clic pe Adăugare Control utilizator Web.
    2. Nume control FragmentCtrl1.ascx, și apoi faceți clic pe Deschidere.
  2. Asigurați-vă că este selectată în fila de Design . Faceți clic și glisați un control formular Web etichetă din secțiunea Formulare Web din caseta de instrumente, și drop controlul etichetă pe pagină.
  3. Faceți clic pe controlul etichetă . În panoul de proprietăți de Visual Studio.mediu integrat de dezvoltare NET (IDE), tip CacheEntryTime în proprietatea ID și lăsați proprietatea de Text gol.
  4. Comutați la vizualizare Proiect HTML, și adăugați următoarele directive de @ OutputCache în partea de sus a paginii:
    <%@ OutputCache Duration="40" VaryByParam="none"%>
    					
  5. Faceți clic dreapta pe fișierul .ascx, și apoi faceți clic pe vizualizare Proiect cod pentru a afișa pagina în spatele codul sursă.
  6. Adăugați următorul cod la evenimentul de Page_Load , care setează proprietatea textul etichetei CacheEntryTime :
    private void Page_Load(object sender, System.EventArgs e)
          {
             CacheEntryTime.Text ="FragmentCtrl1: " +  DateTime.Now.TimeOfDay.ToString();
          }
    					

Controlul 2 (FragmentCtrl2.ascx)

Deși aveți posibilitatea să creați pur și simplu o altă versiune de comanda prima cu o durata de cache diferite pentru a arăta cât mai multe controale de utilizator poate avea comportamente independent în aceeași pagină, această secțiune face controlul doua, FragmentCtrl2.ascx, mai interesant. FragmentCtrl2.ascx este utilizat pentru a introduce atributul VaryByControl . VaryByControl permite intrări cache diferite pentru a se bazează pe valorile pentru un control specificată. Această funcționalitate este mai mult clare la marcă de timp de execuție în secțiunea următoare.
  1. În Visual Studio .NET, creați un control nou utilizator după cum urmează:
    1. În solu?ie de Explorer, faceți clic dreapta pe nodul de proiect, punctul de Adăugareși apoi faceți clic pe Adăugare Control utilizator Web.
    2. Nume control FragmentCtrl2.ascx, și apoi faceți clic pe Deschidere.
  2. Asigurați-vă că este selectată în fila de Design . Faceți clic și glisați un control formular Web etichetă din secțiunea Formulare Web din caseta de instrumente, și apoi fixați controlul etichetă pe pagina.
  3. Faceți clic pe controlul etichetă . În panoul de proprietăți, tastați CacheEntryTime în proprietatea ID și lăsați proprietatea de Text gol.
  4. cursor de pozi?ie direct după controlul etichetă , și apoi apăsați ENTER pentru a vă deplasa la linia următoare în pagină.
  5. Faceți clic și glisați un control din formular Web RadioButtonList din secțiunea de Formulare Web de instrumente, și fixați-l pe pagina. Controlul RadioButtonList ar trebui să apară în sine pe linia de după controlul etichetă .
  6. Faceți clic pe controlul RadioButtonList . În panoul de proprietăți, tastați MyRadioButtonList în proprietatea ID .
  7. În panoul de proprietăți, găsiți proprietatea de elemente pentru controlul MyRadioButtonList , faceți clic pe colectareși apoi faceți clic pe butonul de puncte de suspensie (...) care apare lângă Collection.
  8. În fereastra Editor de colectare ListItem , adăugați membri ListItem după cum urmează:
    1. Membrii, faceți clic pe Adăugare.
    2. În secțiunea Proprietăți ListItem , setați textul și valoarea la Da, și setați selectat la True.
    3. Conform membrilor, faceți clic pe Adăugare din nou.
    4. În secțiunea Proprietăți ListItem , setați textul și valoarea la nu, și setați selectat la False.
    5. Conform membrilor, faceți clic pe Adăugare ultima oară.
    6. În secțiunea Proprietăți ListItem , setați textul și valoarea la poate, și setați selectat la False.
    7. Faceți clic pe OK pentru a reveni în fișierul .ascx în vizualizare Proiect proiect. Anunț că trei radio butoane apar care sunt conținute în controlul RadioButtonList : Da, nu, și poate.
  9. cursor de pozi?ie direct după RadioButtonList control, și apăsați ENTER pentru a vă deplasa la linia următoare în pagină.
  10. Faceți clic și glisați un formular Web buton de control din secțiunea Formulare Web din caseta de instrumente, și fixați-l pe pagina. Buton de control ar trebui să apară în sine pe linia de după controlul RadioButtonList .
  11. Faceți clic pe butonul de control. În panoul de proprietăți, tastați Prezinte în proprietatea de Text .
  12. Comutați la vizualizare Proiect HTML, și adăugați următoarele directive de @ OutputCache în partea de sus a paginii:
    <%@ OutputCache Duration="60" VaryByParam="none" VaryByControl="MyRadioButtonList"%>
    					
  13. Faceți clic dreapta pe fișierul .ascx, și apoi faceți clic pe vizualizare Proiect cod pentru a afișa pagina în spatele codul sursă.
  14. Adăugați următorul cod la evenimentul de Page_Load , care setează proprietatea textul etichetei CacheEntryTime :
    private void Page_Load(object sender, System.EventArgs e)
          {
             CacheEntryTime.Text = "FragmentCtrl2: " + DateTime.Now.TimeOfDay.ToString();
          }
    					

Creare formular Web să conțină controalele de utilizator

Acum, aveți posibilitatea să creați Web formularul (aspx) conține controlul utilizator nou dezvoltate. Pentru a crea formulare Web, urmați acești pași:
  1. Adăugați o nouă formă de Web numit FragmentCaching.aspx la proiect în Visual Studio .NET după cum urmează:
    1. În solu?ie de Explorer, faceți clic dreapta pe nodul de proiect, punctul de Adăugareși apoi faceți clic pe Adăugare formular Web.
    2. Nume FragmentCaching.aspx de formular Web, și apoi faceți clic pe Deschidere.
  2. Asigurați-vă că este selectată în fila de Design . Faceți clic și glisați un control formular Web etichetă din secțiunea Formulare Web din caseta de instrumente, și fixați-l pe pagina.
  3. Faceți clic pe controlul etichetă . În panoul de proprietăți, tastați marcă de timp în proprietatea ID și lăsați proprietatea de Text gol.
  4. cursor de pozi?ie direct după controlul etichetă , și apăsați ENTER pentru a vă deplasa la linia următoare în pagină.
  5. FragmentCtrl1.ascx glisați și fixați-l în formular Web, astfel încât acesta este poziționat după controlul etichetă pe o linia Către de la sine. cursor de pozi?ie direct după controlul, apoi apăsați ENTER pentru a vă deplasa la linia următoare în pagină.
  6. FragmentCtrl2.ascx glisați și fixați-l în formular Web, astfel încât acesta este poziționat după FragmentCtrl1.ascx pe o linia Către de la sine.
  7. În vizualizarea HTML, formularul Web ar trebui să apară similar cu următorul cod:
    <%@ 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ă: Asigurați-vă că controalele sunt plasate în interiorul
  8. Faceți clic dreapta pe fișierul aspx, și apoi faceți clic pe vizualizare Proiect cod pentru a afișa pagina în spatele codul sursă.
  9. Adăugați următorul cod la evenimentul de Page_Load , care setează proprietatea Text eticheta de marcă de timp :
    private void Page_Load(object sender, System.EventArgs e)
          {
             Time.Text = "WebFormTime: " + DateTime.Now.TimeOfDay.ToString();
          }
    					
  10. Din meniul Fișier , faceți clic pe Salvare totală pentru a salva controale utilizator, forma de Web și alte fișierele asociate proiectului.
  11. În meniul construi în Visual Studio .NET mediu de dezvoltare integrat (IDE), faceți clic pe construi pentru a construi a proiectului.

Proba a alerga

Această secțiune demonstrează cum pentru a vizualiza codul de la marcă de timp de execuție a asista comportamentul cache și apoi scurt descrie ce codul efectuează modul în care aceasta nu.
  1. În Visual Studio .NET IDE soluție Explorer, faceți clic dreapta pe formularul de Web FragmentCaching.aspx, și apoi faceți clic pe vizualizare Proiect în Browser pentru a executa codul.
  2. După ce pagina apare în browser-ul, faceți clic dreapta pe pagină, și apoi faceți clic pe Reîmprospătare să reîmprospătați pagina. De asemenea, puteți apăsa tasta F5 să reîmprospătați pagina dacă vizualizați pagina într-un browser care este extern pentru Visual Studio .NET IDE.

    Observați că timpul pe formularul de Web a fost actualizat, dar controalele utilizator încă afișa timpul când lor asociate cache intrare a fost făcută.
  3. În al doilea control, faceți clic pe Submit. Observa că controlul afișează un marcă de timp actualizate. Acest lucru este ca răspuns la stabilirea atribut VaryByControl pentru controlul utilizatorului care face referire la controlul RadioButtonList .
  4. Faceți clic pe nu, și apoi faceți clic pe trimiteți din nou. Observați că timpul este actualizat din nou în control utilizator display. Acest lucru este pentru că o nouă intrare de cache-ul este făcut pentru controlul bazate pe Setare valoare nu .

    Repetați acest pas cu excep?ia cu opțiunea poate . Veți vedea același comportament.
  5. Faceți clic pe Da, și apoi faceți clic pe trimiteți din nou. Se repetă această opera?ie cu opțiunile nu și poate . Observați că aceste selecții de control sunt în cache și că ele afișează timpul de intrare cache anterioare. Dacă continuați să faceți clic pe Submit trecut din directivă @ OutputCache durata setarea, de control utilizator marcă de timp este actualizat pentru fiecare selecție anumită valoare pentru controlul RadioButtonList .
Notă: nu este scopul de acest articol pentru a acoperi toate setările posibile și scenarii pentru cache de fragmente. Pentru mai multe informații, consultați Referințe secțiunea de la sfârșitul acestui articol.

Depanare

  • Nu încercați să programatic manipula un control de utilizator care este cached de ieșire. Acest lucru este pentru că controlul numai dinamic este creat atunci când acesta se execută prima dată înainte de intrarea în cache-ul apare. Cache-ul ieșire îndepline?te toate alte solicitări până când controlul expiră.
  • Dacă formularul Web în utilizator care sunt găzduite controale are o durată de cache-ul de ieșire care este mai lung decât ori durata de controalele de utilizator, setarea formularului Web dictează comportamentul cache controalelor.

REFERINȚE

Pentru informații suplimentare despre ASP.NET cache, faceți clic pe numărul de articol de mai jos pentru a vedea articolul în bază de cunoștințe Microsoft:
307225 INFO: ASP.Prezentare generală a cache-ul NET

Proprietă?i

ID articol: 308378 - Ultima examinare: 17 mai 2012 - Revizie: 1.0
SE APLICĂ LA:
  • Microsoft ASP.NET 1.1
  • Microsoft ASP.NET 1.0
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
Cuvinte cheie: 
kbcaching kbhowtomaster kbservercontrols kbwebforms kbmt KB308378 KbMtro
Traducere automată
IMPORTANT: Acest articol a fost tradus de software-ul de traducere automată Microsoft, si nu de un traducător. Microsoft vă oferă atât articole traduse de persoane, cât și articole traduse automat, astfel incat aveti access la toate articolele din Baza noastră de informatii în limba dvs. materna. Totuși, un articol tradus automat nu este întotdeauna perfect. Acesta poate conține greșeli de vocabular, sintaxă sau gramatică, la fel cum un vorbitor străin poate face greșeli vorbind limba dvs. materna. Compania Microsoft nu este responsabilă pentru nici o inexactitate, eroare sau daună cauzată de traducerea necorespunzătoare a conținutului sau de utilizarea traducerii necorespunzătoare de către clienții nostri. De asemenea, Microsoft actualizează frecvent software-ul de traducere automată.
Face?i clic aici pentru a vizualiza versiunea în limba engleză a acestui articol:308378

Trimite?i feedback

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com