ASP.NETページ出力キャッシュ(OutputCache)

22520 ワード

ページ出力キャッシュは最も簡単なキャッシュメカニズムであり、このメカニズムはASP全体をNETページの内容はサーバメモリに保存されます.ユーザがページを要求すると、キャッシュデータが期限切れになるまで関連データがメモリから出力されます.このプロセスでは、キャッシュ・コンテンツは、ページ処理のライフサイクルを再び通過することなく、ユーザーに直接送信されます.通常、ページ出力キャッシュは、頻繁に変更する必要はありませんが、コンパイルが完了するまで多くの処理が必要なページに特に役立ちます.ページ出力キャッシュは、ページのすべての内容をメモリに保存し、クライアントリクエストを完了するために使用されることに注意してください.
Duration:キャッシュ時間(秒)です.これは必須属性です.このプロパティが含まれていない場合は、アナライザエラーが発生します.
VaryByParam:POSTまたはGETで送信された名前/値ペア(パラメータ)に基づいてページがキャッシュされた内容を更新し、複数のパラメータがセミコロンで区切られていることを意味します.キャッシュ内容をパラメータに基づいて変更しない場合は、値をnoneに設定します.すべてのパラメータ値を変更してキャッシュを更新する場合は、プロパティをアスタリスク(*)に設定します.
VaryByControl:ユーザーコントロールファイルに含まれるサーバーコントロールによってキャッシュを変更します(値はコントロールID、マルチコントロールはセミコロンで区切られます).
フロントページに追加すれば、ページ出力キャッシュを使用できます
<%@ OutputCache Duration="60" VaryByParam="none"%>

次の例を実行すると、60秒以内にページにアクセスする時間が変わっていないことがわかります.
<%@ OutputCache Duration="60" VaryByParam="none"%>

<!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">

<head runat="server">

    <title></title>

</head>

<body>

    <form id="form1" runat="server">

    <div>

         <%=DateTime.Now %>   

    </div>

    </form>

</body>

</html>

 
<%@ OutputCache Duration="60" VaryByParam="a;b"%>

ページはurlの後のパラメータに基づいて異なるキャッシュバージョンを保存します.例えば、http://localhost:3353/WebForm2.aspx?a=2&b=2http://localhost:3353/WebForm2.aspx?a=1&b=1は2つの独立したキャッシュです.
<%@ OutputCache Duration="60" VaryByParam="a;b"%>

<!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">

<head runat="server">

    <title></title>

</head>

<body>

    <form id="form1" runat="server">

    <div>

         <%=DateTime.Now %>   

    </div>

    </form>

</body>

</html>

コントロールによってキャッシュを変更するのを覚えています(これはちょっと分かりにくいですが、例を見てください)dropdownlistにAutoPostBack=「true」を加える必要があります.サーバーを変更しても分かりません.どうやってキャッシュしますか.
<%@ OutputCache Duration="60" VaryByParam="none" VaryByControl="DropDownList1"%>

<!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">

<head runat="server">

    <title></title>

</head>

<body>

    <form id="form1" runat="server">

    <div>

        <%=DateTime.Now %>

        <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true">

            <asp:ListItem>beijing</asp:ListItem>

            <asp:ListItem>shanghai</asp:ListItem>

            <asp:ListItem>guangzhou</asp:ListItem>

        </asp:DropDownList>

    </div>

    </form>

</body>

</html>

実際のプロジェクトでは、キャッシュ時間は一般的にWebに書かれています.config
  <system.web>

    <caching>

      <outputCacheSettings>

        <outputCacheProfiles>

          <add name="CacheTest" duration="50" />

        </outputCacheProfiles>

      </outputCacheSettings>

    </caching>

  </system.web>

呼び出し時
<%@ OutputCache CacheProfile="CacheTest"  VaryByParam="none" %>

注:このプロパティは、ユーザーコントロール(.ascxファイル)に含まれる@OutputCacheコマンドではサポートされていません.ページでこの属性を指定する場合、属性値はoutputCacheSettingsセクションの下にあるoutputCacheProfiles要素の使用可能なアイテムの名前と一致する必要があります.この名前がプロファイル・アイテムと一致しない場合、例外が発生します.
また、ページ出力キャッシュAPIによって、キャッシュResponseクラスのCache属性を制御してページキャッシュポリシーを取得することもできます.この方式の核心はSystemを呼び出すことである.Web.HttpCachePolicy.このクラスには、主にキャッシュ特定のHTTPヘッダを設定方法と、ASPを制御する方法が含まれる.NETページ出力キャッシュの方法.(例を見て)
<!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">

<head runat="server">

    <title></title>

</head>

<body>

    <form id="form1" runat="server">

    <div>

        <%=DateTime.Now %>

    </div>

    </form>

</body>

</html>
using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;



namespace WebApplication2

{

    public partial class WebForm2 : System.Web.UI.Page

    {

        protected void Page_Load(object sender, EventArgs e)

        {

            Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));

        }

    }

}

SetExpiresメソッド:キャッシュの期限切れの絶対時間を設定します.そのパラメータは、期限切れの絶対時間を表すDataTimeクラスのインスタンスです.SetLastModifiedメソッド:ページのLast-Modified HTTPヘッダを設定します.Last-Modified HTTPヘッダはページの最後の変更時間を表し、キャッシュはそれによってタイミングを計る.キャッシュ制限階層に違反した場合、このメソッドは失敗します.このメソッドのパラメータは、DataTimeクラスのインスタンスです.
SetSlidingExpirationメソッド:キャッシュの有効期限を絶対時間から可変時間に設定します.パラメータはブール値です.パラメータがtrueの場合、Cache-Control HTTPヘッダは各応答に従って更新されます.この期限切れモードは、現在の時間に対してすべての出力セットに期限切れヘッダを追加するIIS構成オプションと同じです.パラメータがFalseの場合、この設定は保持され、有効化された調整可能な期限切れの試行は静的に失敗します.このメソッドは、HTTPヘッダに直接マッピングされません.ソース・サーバのキャッシュ・ポリシーは、後続のモジュールまたはアシスト・リクエストによって設定されます.
SetOmitVaryStarメソッド:ASP.NET 2.0の新しい方法.パラメータ別に区別するときに、応答にvary:*ヘッダーが含まれるかどうかを指定します.メソッドパラメータはブール値で、HttpCachePolicyがVaryByHeadersプロパティに*値を使用しないことを示す場合はtrueです.そうでなければfalseです.
SetCacheabilityメソッド:ページのCache-Control HTTPヘッダを設定します.このヘッダーは、ネットワーク上でドキュメントをキャッシュする方法を制御するために使用されます.この方法には2つのリロード方式があり,異なるのはパラメータである.1つのリロード方法のパラメータは、HttpCacheability列挙値であり、NoCache、Private、Public、Server、ServerAndNoCacheおよびServerAndPrivateを含む(これらの列挙値の定義はMSDNを参照).別の方法のパラメータは2つあり、1つのパラメータはHttpCacheability列挙値であり、もう1つのパラメータは文字列であり、ヘッダに追加されたキャッシュ制御拡張を表す.フィールド拡張子は、PrivateまたはNoCacheコマンドとともに使用される場合にのみ有効であることに注意してください.互換性のないコマンドと拡張子を組み合わせると、このメソッドは無効なパラメータ異常を引き起こします.