我在页面上使用自定义缓存,留下一个时间戳跟随缓存版本。自定义缓存不缓存查询字符串
我有
<%@ 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不会另有说明。该页面保存的值为Type
。
当我用?Type=1
或?Type=2
调用页面时,页面不会保存到缓存 - 每刷新一次时间戳记更改。
我发现,如果我打电话而不是Type
参数缓存保存,然后存在,当我用该参数调用页面。
有没有解释?此外 - 在Global.asax中,我无法访问对象或文件系统来记录发生的事情。有没有办法?
UPDATE
例如请拨打<url>?Type=1
,然后<url>
为我缓存下次拨打<url>?Type=1
,但给相同的缓存为<url>?Type=2
。
UPDATE
我现在有Return "cache" & context.Request.QueryString("Type")
。虽然在查询字符串中发送没有Type
的请求会提供页面的缓存版本,但发送Type
不会缓存,尽管结果(cache1
或cache2
)相同,并且页面应该被缓存。
跟进 我发现发送Type=3
,或任何东西,除了1
和2
根据需要并缓存页面。 Page_Load
按值处理1
& 2
- 可以有任何连接吗?