ASP.NET의 페이지 부분 캐싱(Page Fragment Caching)
이전의 출력 캐싱(Output Caching)과 다른 점은 페이지의 일부를 사용자 정의 컨트롤로 만들어 사용자 컨트롤을 캐싱 하는 것이다. 페이지 캐싱은 전체 페이지를 캐싱하므로 비 실용적일 때도 있다. ASP.NET에서는 부분 캐싱이라고 불리는 페이지 컨텐트의 캐싱 영역을 분리하여 출력하는 간단한 방법을 제공 한다.
1. VS.NET 새 프로젝트를 생성 한다. FragmentCaching 이라고 이름을 주자.
2. FragmentCaching.aspx 파일을 만들어 아래의 코드를 붙여 넣자.
<%@ Register TagPrefix="ucssj" TagName="DataControl" Src="datactrl.ascx" %>
<HTML>
<script language="C#" runat="server">
void Page_Load(Object Src, EventArgs E ) {
TimeMsg.Text = DateTime.Now.ToString("G");
}
</script>
<body>
<h3>
<font face="Verdana">페이지 부분 캐싱</font>
</h3>
<ucssj:DataControl runat="server" ID="Datacontrol1" NAME="Datacontrol1" />
<i>페이지 마지막 생성일시:</i>
<asp:label id="TimeMsg" runat="server" />
</body>
</HTML>
3. 프로젝트에서 마우스 오른쪽 버튼을 눌러 [추가] [웹 사용자 정의 컨트롤] 을 선택하여 사용자 정의 컨트롤 파일 datactrl.ascx 파일을 추가 하자. 그 내용은 다음과 같다.
<%@ OutputCache Duration="60" VaryByParam="gbn1" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<script language="C#" runat="server">
void Page_Load(Object Src, EventArgs E ) {
String selectCmd;
String gbn1 = Request["gbn1"];
//수가구분에 따라 병원 수가 테이블에서 데이터 추출
if( gbn1 == null ) {
selectCmd = "select sname1, sbun, sjum, skum from HSuga";
}
else {
selectCmd = "select sname1, sbun, sjum, skum from HSuga where gbn1 = " + gbn1 ;
}
SqlConnection myConnection = new SqlConnection(
"data source=localhost; initial catalog=DentalDB;" +
"persist security info=True;user id=sa;password=osstem");
SqlDataAdapter myCommand = new SqlDataAdapter(selectCmd, myConnection);
DataSet ds = new DataSet();
myCommand.Fill(ds, "HSuga");
MyDataGrid.DataSource=new DataView(ds.Tables[0]);
MyDataGrid.DataBind();
TimeMsg.Text = DateTime.Now.ToString("G");
}
</script>
<table cellspacing="0" cellpadding="3" rules="all" style="BORDER-LEFT-COLOR:black;BORDER-BOTTOM-COLOR:black;WIDTH:700px;BORDER-TOP-COLOR:black;BORDER-COLLAPSE:collapse;BACKGROUND-COLOR:#aaaadd;BORDER-RIGHT-COLOR:black">
<tr>
<td>
<a href="FragmentCaching.aspx?gbn1=1">진찰료</a>
</td>
<td>
<a href="FragmentCaching.aspx?gbn1=5">처치 수술료</a>
</td>
<td>
<a href="FragmentCaching.aspx?gbn1=8">검사료</a>
</td>
</tr>
</table>
<p>
<ASP:DataGrid id="MyDataGrid" runat="server" Width="700px" BackColor="#CCCCFF" BorderColor="Black"
CellPadding="3" Font-Name="Verdana" Font-Size="8pt" HeaderStyle-BackColor="#aaaadd" Height="153px"
Font-Names="Verdana" PageSize="5">
<HeaderStyle BackColor="#AAAADD"></HeaderStyle>
</ASP:DataGrid>
<p><i>컨트롤 내에서 마지막 생성 일시:</i>
<asp:label id="TimeMsg" runat="server" /></p>
[실행 결과]
내부의 사용자 정의 컨트롤로 만든 부분은 리로드 할 때 마다 시간이 바뀌지 않는다. 60초동안 캐시 되기 때문 이다.
이전의 출력 캐싱(Output Caching)과 다른 점은 페이지의 일부를 사용자 정의 컨트롤로 만들어 사용자 컨트롤을 캐싱 하는 것이다. 페이지 캐싱은 전체 페이지를 캐싱하므로 비 실용적일 때도 있다. ASP.NET에서는 부분 캐싱이라고 불리는 페이지 컨텐트의 캐싱 영역을 분리하여 출력하는 간단한 방법을 제공 한다.
1. VS.NET 새 프로젝트를 생성 한다. FragmentCaching 이라고 이름을 주자.
2. FragmentCaching.aspx 파일을 만들어 아래의 코드를 붙여 넣자.
<%@ Register TagPrefix="ucssj" TagName="DataControl" Src="datactrl.ascx" %>
<HTML>
<script language="C#" runat="server">
void Page_Load(Object Src, EventArgs E ) {
TimeMsg.Text = DateTime.Now.ToString("G");
}
</script>
<body>
<h3>
<font face="Verdana">페이지 부분 캐싱</font>
</h3>
<ucssj:DataControl runat="server" ID="Datacontrol1" NAME="Datacontrol1" />
<i>페이지 마지막 생성일시:</i>
<asp:label id="TimeMsg" runat="server" />
</body>
</HTML>
3. 프로젝트에서 마우스 오른쪽 버튼을 눌러 [추가] [웹 사용자 정의 컨트롤] 을 선택하여 사용자 정의 컨트롤 파일 datactrl.ascx 파일을 추가 하자. 그 내용은 다음과 같다.
<%@ OutputCache Duration="60" VaryByParam="gbn1" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<script language="C#" runat="server">
void Page_Load(Object Src, EventArgs E ) {
String selectCmd;
String gbn1 = Request["gbn1"];
//수가구분에 따라 병원 수가 테이블에서 데이터 추출
if( gbn1 == null ) {
selectCmd = "select sname1, sbun, sjum, skum from HSuga";
}
else {
selectCmd = "select sname1, sbun, sjum, skum from HSuga where gbn1 = " + gbn1 ;
}
SqlConnection myConnection = new SqlConnection(
"data source=localhost; initial catalog=DentalDB;" +
"persist security info=True;user id=sa;password=osstem");
SqlDataAdapter myCommand = new SqlDataAdapter(selectCmd, myConnection);
DataSet ds = new DataSet();
myCommand.Fill(ds, "HSuga");
MyDataGrid.DataSource=new DataView(ds.Tables[0]);
MyDataGrid.DataBind();
TimeMsg.Text = DateTime.Now.ToString("G");
}
</script>
<table cellspacing="0" cellpadding="3" rules="all" style="BORDER-LEFT-COLOR:black;BORDER-BOTTOM-COLOR:black;WIDTH:700px;BORDER-TOP-COLOR:black;BORDER-COLLAPSE:collapse;BACKGROUND-COLOR:#aaaadd;BORDER-RIGHT-COLOR:black">
<tr>
<td>
<a href="FragmentCaching.aspx?gbn1=1">진찰료</a>
</td>
<td>
<a href="FragmentCaching.aspx?gbn1=5">처치 수술료</a>
</td>
<td>
<a href="FragmentCaching.aspx?gbn1=8">검사료</a>
</td>
</tr>
</table>
<p>
<ASP:DataGrid id="MyDataGrid" runat="server" Width="700px" BackColor="#CCCCFF" BorderColor="Black"
CellPadding="3" Font-Name="Verdana" Font-Size="8pt" HeaderStyle-BackColor="#aaaadd" Height="153px"
Font-Names="Verdana" PageSize="5">
<HeaderStyle BackColor="#AAAADD"></HeaderStyle>
</ASP:DataGrid>
<p><i>컨트롤 내에서 마지막 생성 일시:</i>
<asp:label id="TimeMsg" runat="server" /></p>
[실행 결과]
내부의 사용자 정의 컨트롤로 만든 부분은 리로드 할 때 마다 시간이 바뀌지 않는다. 60초동안 캐시 되기 때문 이다.
[100%환급,개발자전문]빅데이터/SQL/자바/스프링/안드로이드/닷… | 12-27 | 2520 | ||
[채용확정무료교육]오라클자바개발잘하는신입뽑기2개월과정,교육… | 12-11 | 1849 | ||
53 | [평일100%환급7건]Spring,자바&JSP,안드로이드,웹퍼블리싱,C#닷… | 03-15 | 1657 | |
52 | [주말]C#,ASP.NET마스터 | 01-31 | 1746 | |
51 | [기업100%환급,평일주간]SQL기초에서스키마오브젝트,PLSQL,힌트… | 01-31 | 2516 | |
50 | [평일주간야간,주말]C기본&자료구조,알고리즘 | 01-31 | 1391 | |
49 | [평일주간,평일야간,주말]Spring,MyBatis,Hibernate개발자과정-… | 01-19 | 1691 | |
48 | [평일야간,주말]안드로이드개발자과정(Android기초실무) | 01-11 | 1579 | |
47 | [평일야간,주말주간야간]JAVA,Network&JSP&Spring,MyBatis,Hiber… | 01-03 | 2094 | |
46 | [100%환급,개발자전문]빅데이터/SQL/자바/스프링/안드로이드/닷… | 12-27 | 2520 | |
45 | [평일주간]NoSQL,MongoDB,빅데이터기초과정 | 12-19 | 1808 | |
44 | [평일주간야간, 주말]웹퍼블리싱 마스터(HTML5,CSS3,jQUERY,AJAX… | 12-14 | 1791 | |
43 | [채용확정무료교육]오라클자바개발잘하는신입뽑기2개월과정,교육… | 12-11 | 1849 | |
42 | [평일주간]빅데이터하둡기초과정(BigData Hadoop) | 12-09 | 1451 | |
41 | [평일야간]닷넷(C#,Network,ADO.NET,ASP.NET)마스터 | 12-01 | 1674 | |
40 | [기업100%환급]오라클&자바웹스프링신입과정3주(SQL,JAVA,JSP,Se… | 12-01 | 1849 | |
39 | [평일야간,주말]SQL기초에서실무까지(SQL기초,PLSQL,힌트,튜닝) | 12-01 | 1320 |
댓글 없음:
댓글 쓰기