我在页面上使用自定义缓存,在缓存版本之后留下时间戳。
我有过
<%@ 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 Ifcache-2是默认状态,用于在没有发出查询字符串请求且cookie没有说其他情况时使用。该页保存cookie的值为Type。
当我用?Type=1或?Type=2调用页面时,页面不会保存为缓存-每次刷新时间戳更改。
我发现,如果我不使用调用页面,那么Type参数缓存就会被保存,然后当我用该参数调用页面时,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的值--会有什么联系吗?
发布于 2012-12-12 19:39:57
this question的答案似乎解释了很多。解决办法是另一个问题。
https://stackoverflow.com/questions/13742385
复制相似问题