2013-03-16 54 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