ページでカスタム キャッシュを使用しており、キャッシュされたバージョンを追跡するためにタイムスタンプを残しています。
私は持っている
<%@ OutputCache Duration="1200" VaryByParam="None" VaryByCustom="myCache" Location="ServerAndClient" %>
ページ上にあり、Global.asax のコード ビハインドには (簡略化された)
Public Overrides Function GetVaryByCustomString(context As HttpContext, arg As String) As String
If (arg = "myCache") Then
If context.Request.QueryString("Type").ToString() = "1" Then Return "cache-1"
If context.Request.QueryString("Type").ToString() = "2" Then Return "cache-2"
If context.Request.Cookies("Type").Value = "1" Then Return "cache-1"
Return "cache-2"
End If
cache-2クエリ文字列リクエストが行われておらず、Cookie がそれ以外のことを言っていない場合のデフォルト状態です。ページは の値で Cookie を保存しますType。
?Type=1いずれかでページを呼び出すか?Type=2、ページがキャッシュに保存されていない場合、タイムスタンプが変更されるたびに更新されます。
パラメータを使用せずにページを呼び出すと、キャッシュが保存され、Typeパラメータを使用してページを呼び出すと存在することがわかりました。
説明はありますか?さらに、Global.asax では、Responseオブジェクトまたはファイル システムにアクセスして、何が起きているかをログに記録できませんでした。方法はありますか?
アップデート
たとえば、 を呼び出すと<url>?Type=1、<url>の次の呼び出しにはキャッシュが返されますが<url>?Type=1、 には同じキャッシュが返され<url>?Type=2ます。
アップデート
私は今持っていReturn "cache" & context.Request.QueryString("Type")ます。Typeクエリ文字列なしでリクエストを送信するとキャッシュされたバージョンのページが返されますが、送信はキャッシュされTypeませんが、結果 (cache1またはcache2) は同じであり、ページがキャッシュされるはずです。
フォローアップType=3、またはそれ以外のもの1を
送信していることがわかり、2必要に応じてページをキャッシュします。Page_Load値に作用します1& 2- 何か関係があるのでしょうか?