2012-12-06 55 views
0

我在页面上使用自定义缓存,留下一个时间戳跟随缓存版本。自定义缓存不缓存查询字符串

我有

<%@ 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不会缓存,尽管结果(cache1cache2)相同,并且页面应该被缓存。

跟进 我发现发送Type=3,或任何东西,除了12根据需要并缓存页面。 Page_Load按值处理1 & 2 - 可以有任何连接吗?

回答

0

回答this question似乎解释了很多。解决方法是一个单独的问题。