ページでカスタム キャッシュを使用しており、キャッシュされたバージョンを追跡するためにタイムスタンプを残しています。
私は持っている
<%@ 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
- 何か関係があるのでしょうか?