次の方法で共有


PartialCachingAttribute クラス

Web フォーム ユーザー コントロール (.ascx files) が、出力をキャッシュするかどうか、およびその方法を示すために使用するメタデータ属性を定義します。このクラスは継承できません。

名前空間: System.Web.UI
アセンブリ: System.Web (system.web.dll 内)

構文

'宣言
<AttributeUsageAttribute(AttributeTargets.Class)> _
Public NotInheritable Class PartialCachingAttribute
    Inherits Attribute
'使用
Dim instance As PartialCachingAttribute
[AttributeUsageAttribute(AttributeTargets.Class)] 
public sealed class PartialCachingAttribute : Attribute
[AttributeUsageAttribute(AttributeTargets::Class)] 
public ref class PartialCachingAttribute sealed : public Attribute
/** @attribute AttributeUsageAttribute(AttributeTargets.Class) */ 
public final class PartialCachingAttribute extends Attribute
AttributeUsageAttribute(AttributeTargets.Class) 
public final class PartialCachingAttribute extends Attribute
適用できません。

解説

PartialCachingAttribute 属性クラスは、フラグメント キャッシュをサポートするユーザー コントロール (.ascx files) をマークし、ASP.NET がコントロールをキャッシュするときに使用するキャッシュ設定をカプセル化します。ページおよびコントロールの開発者は、PartialCachingAttribute 属性を使用して、分離コード ファイルのユーザー コントロールの出力キャッシュを有効にします。

PartialCachingAttribute の使用は、出力キャッシュを有効にできる複数の方法の 1 つです。出力キャッシュを有効にするために使用できる方法は、次のとおりです。

  • ディレクティブによって出力キャッシュを有効にする場合は、@ OutputCache ディレクティブを使用します。

  • 分離コード ファイルのユーザー コントロールのキャッシュを有効にするには、PartialCachingAttribute を使用します。

  • BasePartialCachingControl のインスタンスで処理を行うプログラムによってキャッシュの設定を指定するには、ControlCachePolicy クラスを使用します。

ユーザー コントロールに @ OutputCache ディレクティブが含まれているか、PartialCachingAttribute が適用されている場合、ASP.NET パーサーは、PartialCachingControl クラスのインスタンスを生成して、ユーザー コントロールをラップします。

ASP.NET のキャッシュの詳細については、「ASP.NET キャッシュ」を参照してください。属性の使用方法については、「属性を使用したメタデータの拡張」を参照してください。

トピック 場所
方法 : 宣言的属性を使用してユーザー コントロールの複数のバージョンをキャッシュする Visual Studio ASP .NET での Web アプリケーションの作成
方法 : パラメータに基づいたユーザー コントロールの複数バージョンをキャッシュする Visual Studio ASP .NET での Web アプリケーションの作成
方法 : 宣言的属性を使用してユーザー コントロールの複数のバージョンをキャッシュする Visual Studio ASP .NET での Web アプリケーションの作成
方法 : パラメータに基づいたユーザー コントロールの複数バージョンをキャッシュする Visual Studio ASP .NET での Web アプリケーションの作成
方法 : 宣言的属性を使用してユーザー コントロールの複数のバージョンをキャッシュする ASP .NET Web アプリケーションの作成
方法 : パラメータに基づいたユーザー コントロールの複数バージョンをキャッシュする ASP .NET Web アプリケーションの作成

使用例

PartialCachingAttribute を使用するコード例を次に示します。この例は、3 つの部分で構成されます。

  • UserControl から継承し、PartialCachingAttribute 属性の適用先となる部分クラス ctlMine

  • ctlMine 部分クラスで使用するユーザー コントロール。

  • ユーザー コントロールをホストする Web フォーム ページ。

この例の最初の部分では、UserControl 基本クラスから継承し、PartialCachingAttribute 属性の適用先となる部分クラスを示しています。この例では、属性によって、ユーザー コントロールが 20 秒間キャッシュされることを指定しています。

' Filename is partialcache.vb
' Create a code-behind user control that is cached
' for 20 seconds using the PartialCachingAttribute class.
' This control uses a DataGrid server control to display
' XML data.
Imports System
Imports System.IO
Imports System.Data
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls

Namespace Samples.AspNet.VB.Controls

    ' Set the PartialCachingAttribute.Duration property to 20 seconds.
    <PartialCaching(20)> _
    Partial Class ctlMine
        Inherits UserControl

        Protected Sub Page_Load(ByVal Src As [Object], ByVal E As EventArgs)
            Dim ds As New DataSet()

            Dim fs As New FileStream(Server.MapPath("schemadata.xml"), FileMode.Open, FileAccess.Read)
            Dim reader As New StreamReader(fs)
            ds.ReadXml(reader)
            fs.Close()

            Dim [Source] As New DataView(ds.Tables(0))
            ' Use the LiteralControl constructor to create a new
            ' instance of the class.
            Dim myLiteral As New LiteralControl()
            ' Set the LiteralControl.Text property to an HTML
            ' string and the TableName value of a data source.
            myLiteral.Text = "<h6><font face=verdana>Caching an XML Table: " & [Source].Table.TableName & " </font></h6>"
            MyDataGrid.DataSource = [Source]
            MyDataGrid.DataBind()

            TimeMsg.Text = DateTime.Now.ToString("G")
        End Sub 'Page_Load 
    End Class 'ctlMine
End Namespace
// [filename partialcache.cs]
// Create a code-behind user control that is cached
// for 20 seconds using the PartialCachingAttribute class.
// This control uses a DataGrid server control to display
// XML data.
using System;
using System.IO;
using System.Data;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Samples.AspNet.CS.Controls
{

    // Set the PartialCachingAttribute.Duration property to 20 seconds.
    [PartialCaching(20)]
    public partial class ctlMine : UserControl
    {

        protected void Page_Load(Object Src, EventArgs E)
        {
            DataSet ds = new DataSet();

            FileStream fs = new FileStream(Server.MapPath("schemadata.xml"), FileMode.Open, FileAccess.Read);
            StreamReader reader = new StreamReader(fs);
            ds.ReadXml(reader);
            fs.Close();

            DataView Source = new DataView(ds.Tables[0]);
            // Use the LiteralControl constructor to create a new
            // instance of the class.
            LiteralControl myLiteral = new LiteralControl();
            // Set the LiteralControl.Text property to an HTML
            // string and the TableName value of a data source.
            myLiteral.Text = "<h6><font face=verdana>Caching an XML Table: " + Source.Table.TableName + " </font></h6>";
            MyDataGrid.DataSource = Source;
            MyDataGrid.DataBind();

            TimeMsg.Text = DateTime.Now.ToString("G");

        }
    }
}
// [filename partialcache.jsl]
// Create a code-behind user control that is cached
// for 20 seconds using the PartialCachingAttribute class.
// This control uses a DataGrid server control to display
// XML data.
import System.*;  
import System.IO.*;  
import System.Data.*;  
import System.Web.*;  
import System.Web.UI.*;  
import System.Web.UI.WebControls.*;  

// Set the PartialCachingAttribute.Duration property to 20 seconds.
/** @attribute PartialCaching(20)
 */
public class ctlMine extends UserControl 
{    
    public DataGrid myDataGrid;
    public Label timeMsg;

    protected void Page_Load(Object src, EventArgs e)
    {
        DataSet ds = new DataSet();
        FileStream fs = new FileStream(get_Server().MapPath("schemadata.xml"),
            FileMode.Open, FileAccess.Read);
        StreamReader reader = new StreamReader(fs);
        ds.ReadXml(reader);
        fs.Close();
        DataView source = new DataView(ds.get_Tables().get_Item(0));
        // Use the LiteralControl constructor to create a new
        // instance of the class.
        LiteralControl myLiteral = new LiteralControl();
        // Set the LiteralControl.Text property to an HTML
        // string and the TableName value of a data source.
        myLiteral.set_Text("<h6><font face=verdana>Caching an XML Table: " 
            + source.get_Table().get_TableName() + " </font></h6>");
        myDataGrid.set_DataSource(source);
        myDataGrid.DataBind();
        timeMsg.set_Text(DateTime.get_Now().ToString("G"));
    } //Page_Load 
} //ctlMine

この例の 2 番目の部分には、前述の例でユーザー コントロールのキャッシュ方法を示すために使用するユーザー コントロールを示しています。

<!-- The mark-up .ascx file that displays the output of
     the partialcache.vb user control code-behind file. -->
<%@ Control language="vb" inherits="Samples.AspNet.VB.Controls.ctlMine" CodeFile="partialcache.vb.ascx.vb" %>

  <ASP:DataGrid id="MyDataGrid" runat="server"
    Width="900"
    BackColor="#ccccff"
    BorderColor="black"
    ShowFooter="false"
    CellPadding="3"
    CellSpacing="0"
    Font-Names="Verdana"
    Font-Size="8pt"
    HeaderStyle-BackColor="#aaaadd"
    EnableViewState="false"
  />

  <br />

  <i>Control last generated on:</i> <asp:label id="TimeMsg" runat="server" />
<!-- The mark-up .ascx file that displays the output of
     the partialcache.cs user control code-behind file. -->
<%@ Control language="C#" inherits="Samples.AspNet.CS.Controls.ctlMine" CodeFile="partialcache.cs.ascx.cs" %>

  <ASP:DataGrid id="MyDataGrid" runat="server"
    Width="900"
    BackColor="#ccccff"
    BorderColor="black"
    ShowFooter="false"
    CellPadding="3"
    CellSpacing="0"
    Font-Names="Verdana"
    Font-Size="8pt"
    HeaderStyle-BackColor="#aaaadd"
    EnableViewState="false"
  />

  <br />

  <i>Control last generated on:</i> <asp:label id="TimeMsg" runat="server" />
// The mark-up .ascx file that displays the output of
// the partialcache.jsl user control code-behind file.
<%@ Control language="VJ#" inherits="ctlMine" src="partialcache.jsl" %>

  <ASP:DataGrid id="myDataGrid" runat="server"
    Width="900"
    BackColor="#ccccff"
    BorderColor="black"
    ShowFooter="false"
    CellPadding="3"
    CellSpacing="0"
    Font-Names="Verdana"
    Font-Size="8pt"
    HeaderStyle-BackColor="#aaaadd"
    EnableViewState="false"
  />

  <br />

  <i>Control last generated on:</i> <asp:label id="timeMsg" runat="server" />

この例の 3 番目の部分では、ユーザー コントロールをホストする Web フォーム ページを示しています。

<!-- The WebForms page that contains the user control generated
     by partialcache.vb. -->
<%@ Register TagPrefix="Acme" TagName="Cache" Src="partialcache.vb.ascx" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<script language="vb" runat="server">

   Sub Page_Load(Src As [Object], E As EventArgs) 
      TimeMsg.Text = DateTime.Now.ToString("G")
   End Sub 'Page_Load

  </script>

<head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
  
  <form id="form1" runat="server">
    <Acme:Cache runat="server"/>
    <br />

    <i>Page last generated on:</i> <asp:label id="TimeMsg" runat="server" />

  </form>
</body>
</html>
<!-- The WebForms page that contains the user control generated
     by partialcache.cs. -->
<%@ Register TagPrefix="Acme" TagName="Cache" Src="partialcache.cs.ascx" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<script language="C#" runat="server">

      void Page_Load(Object Src, EventArgs E ) {

          TimeMsg.Text = DateTime.Now.ToString("G");
      }

  </script>

<head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
  
  <form id="form1" runat="server">
    <Acme:Cache runat="server"/>
    <br />

    <i>Page last generated on:</i> <asp:label id="TimeMsg" runat="server" />

  </form>
</body>
</html>
// The WebForms page that contains the user control generated
// by partialcache.jsl.
<%@ Register TagPrefix="Acme" TagName="Cache" Src="partialcache.jsl.ascx" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<script language="VJ#" runat="server">

void Page_Load(Object src, EventArgs e ) 
{
    TimeMsg.set_Text(DateTime.get_Now().ToString("G"));
} //Page_Load

  </script>

<head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
  
  <form id="form1" runat="server">
    <Acme:Cache runat="server"/>
    <br />

    <i>Page last generated on:</i> <asp:label id="TimeMsg" runat="server" />

  </form>
</body>
</html>

.NET Framework のセキュリティ

継承階層

System.Object
   System.Attribute
    System.Web.UI.PartialCachingAttribute

スレッド セーフ

この型の public static (Visual Basicでは共有) メンバはすべて,スレッド セーフです。インスタンス メンバの場合は,スレッド セーフであるとは限りません。

プラットフォーム

Windows 98,Windows Server 2000 SP4,Windows CE,Windows Millennium Edition,Windows Mobile for Pocket PC,Windows Mobile for Smartphone,Windows Server 2003,Windows XP Media Center Edition,Windows XP Professional x64 Edition,Windows XP SP2,Windows XP Starter Edition

Microsoft .NET Framework 3.0 は Windows Vista,Microsoft Windows XP SP2,および Windows Server 2003 SP1 でサポートされています。

バージョン情報

.NET Framework

サポート対象 : 3.0,2.0,1.1,1.0

参照

関連項目

PartialCachingAttribute メンバ
System.Web.UI 名前空間
UserControl

その他の技術情報

ASP.NET ユーザー コントロール
ASP.NET ページの一部だけのキャッシュ
@ OutputCache