2013-03-16 89 views
-1

当发生错误时我正在做Response.Redirect我不希望浏览器缓存响应重定向

但我看到这是造成一些访客的麻烦。因为愚蠢的浏览器使用缓存,他们无法再看到该页面。由于错误是暂时的,它造成巨大的麻烦

,所以我不希望发生任何重定向到被缓存

我做了一些搜索,并拿出

Response.Cache.SetCacheability(HttpCacheability.ServerAndNoCache) 

但我想所有要缓存(图像)预期重定向本身。那么最好的解决方案是什么?

Asp.net C#4.5 - 4.5 netframework

+1

看看您是否可以将http-status-code更改为302或307(temperary-redirect),那么浏览器就不会将其缓存。 – 2013-03-16 23:56:57

+0

@CorvinMcpherson它是不缓存的默认行为。实际上目前他们应该不缓存response.redirect。但有些访问者报告说他们一直在重定向。所以看起来他们的浏览器即使在默认情况下也不缓存,所以他们的缓存看起来像。 – MonsterMMORPG 2013-03-17 01:20:46

+0

这很奇怪。 – 2013-03-17 02:43:37

回答

2

一个简单的窍门是一个随机参数添加到您的重定向URL的结尾。

例如

Response.Redirect("/page.aspx?_rnd=" + RndNumber); 

RndNumber是一个随机数,你通过检查,如果有其他参数或不能创建网址,适当添加随机的。浏览器会将url网址与url参数一起缓存,这样可以避免您提到的问题。

+0

现在这是一个不错的解决方案。但据我测试,Response.Cache.SetCacheability(HttpCacheability.ServerAndNoCache)方法不会强制浏览器重新加载图像或JavaScript或css文件。我错了吗? – MonsterMMORPG 2013-03-17 01:19:48

+1

@MonsterMMORPG你是对的。每个文件都有其缓存的个人标题。 – Aristos 2013-03-17 01:41:36

+0

你也可以将相同的模式应用于静态文件..你可能希望将这个“缓存中断者”基于除了随机数之外的其他东西,但是当你希望客户端获得新文件时有更多的控制权 – felickz 2013-03-17 01:48:54