1

ユーザーの場所を要求し、それを Cookie に保存する Web サイトがあります。Web サイトにキャッシュを追加して、同じ URL/クエリ文字列/Cookie へのすべてのリクエストでクライアントのブラウザ キャッシュが最初に使用されるようにしたいと考えています。を使用して、サーバー上の各要求に対してカスタム文字列を作成することvaryByCustomで、サーバー キャッシングでこれを機能させることができます。outputCacheProfilesブラウザで「更新」を押さなくても、ユーザーが Cookie を新しい場所で更新した後、各ページの新しいバージョンを強制的に要求する方法が見つかりません。

Web ブラウザーのクライアント キャッシュの依存関係として Cookie を含めるにはどうすればよいですか?

これは私が現在行っていることで、サーバー上のさまざまな url/querystring/cookie コンボをキャッシュするために機能します。

web.config で。

<system.web>
...
    <caching>
      <outputCacheSettings>
        <outputCacheProfiles>
          <add name="DefaultCacheProfile" enabled="true" duration="60"  varyByCustom="latlon" varyByParam="None" />
        </outputCacheProfiles>        
      </outputCacheSettings>
    </caching>

マイページのプロフィールを使用するには...

<%@ OutputCache CacheProfile="DefaultCacheProfile" %>

global.asax.cs 内 ( CookieSupportCookie を読み取るための内部クラスです)

public override string GetVaryByCustomString(System.Web.HttpContext context, string custom)
{

    if (custom.ToLower() == "latlon") {
        if (CookieSupport.CookieExists) {
            double lon = double.Parse(CookieSupport.CookieValueGet("lon"));
            double lat = double.Parse(CookieSupport.CookieValueGet("lat"));

            string varystring = string.Format("{0},{1},{2}", Request.QueryString, lat, lon);

            return varystring;
        } else {
            return Request.QueryString.ToString;
        }
    }

    return base.GetVaryByCustomString(context, custom);
}

これが私のクッキーの作成方法です...

System.Web.HttpCookie oCookie = new System.Web.HttpCookie(CookieSupport.CookieName);
oCookie.Values.Add("lat", data_Lat.ToString);
oCookie.Values.Add("lon", data_Lng.ToString);    
Response.Cookies.Add(oCookie);
4

0 に答える 0