首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自定义缓存不缓存查询字符串

自定义缓存不缓存查询字符串
EN

Stack Overflow用户
提问于 2012-12-06 11:11:31
回答 1查看 349关注 0票数 0

我在页面上使用自定义缓存,在缓存版本之后留下时间戳。

我有过

代码语言:javascript
复制
<%@ OutputCache Duration="1200" VaryByParam="None" VaryByCustom="myCache" Location="ServerAndClient" %>

在页面上,Global.asax的代码隐藏已经(简化)

代码语言:javascript
复制
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参数缓存就会被保存,然后当我用该参数调用页面时,Type参数缓存就会存在。

有什么解释吗?此外,在Global.asax中,我无法访问Response对象或文件系统来记录正在发生的事情。有办法吗?

更新

例如,调用<url>?Type=1,然后<url><url>?Type=1的下一个调用提供缓存,但为<url>?Type=2提供相同的缓存。

更新

我现在有Return "cache" & context.Request.QueryString("Type")了。当在查询字符串中发送没有Type的请求时,发送Type不会缓存页面,尽管结果(cache1cache2)是相同的,页面应该被缓存。

后续--我发现发送Type=3或除12之外的任何东西--都会按需要缓存页面。Page_Load作用于1 & 2的值--会有什么联系吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-12 19:39:57

this question的答案似乎解释了很多。解决办法是另一个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13742385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档