2009-08-19 60 views
3

我需要客戶端(使用JavaScript)來使其擁有的頁面失效並且基本上獲取新版本?如何從客戶端無效瀏覽器緩存中的頁面?

我想我可以用頭做的這一切:Invalidating cached content, If-Modified Headers?

如果有沒有辦法讓瀏覽器刷新其當前緩存的版本,具有了進行新的請求(通過一個新的URL)......使可以使用相同的原始URL請求查看更新的內容?

+0

使* current *頁面失效,或者使當前頁面採取的操作確定的其他頁面失效?我也會對這個問題的答案感興趣。 – Roboprog 2009-08-19 19:11:53

+0

我有一個示例測試,請參閱上面的stackoverflow鏈接... – farinspace 2009-08-19 21:01:13

回答

5

你不能做到這一點與JavaScript,以便解決您的問題或使用POST方法而不是GET或使用nocache random parameter trick

如果您想了解更多信息,請參見: Is it possible to cache POST methods in HTTP?

+0

爲什麼它被downvoted?我的答案沒有看到任何問題。 – Cleiton 2009-08-19 19:01:40

+0

- 因爲你聲明它不能用JavaScript來完成。 - 因爲使用POST而不是GET不是太安寧。 – Zed 2009-08-19 19:17:26

+0

@Zed,感謝您的評論。但至少我知道這是不可能的「使頁面緩存無效」,當我們使用POST方法強制IE獲取最新版本時,相應的RFC 2616在第13節(HTTP緩存)中明確指出POST請求不應該被緩存。 – Cleiton 2009-08-19 19:26:45

7

如果你想加載當前頁面,您可以這樣做:

location.reload(true); 

否則,「傳統」的方式是添加一個隨機的查詢字符串到年底

'...?rnd=' + Math.random(); 
+1

大聲笑,我的是完全一樣的這一個,我下了票...... NICE – Zoidberg 2009-08-19 19:20:23

+0

我也得到了downvote ...看起來像某人只是大衆 - downvoted所有的答案。 – Greg 2009-08-19 19:22:35

+0

那麼愚蠢...因爲我們的答案是很好的答案......可靠,會解決問題。 – Zoidberg 2009-08-19 19:24:50

3

當您參考該頁面時,將隨機變量添加到結尾。例如:

document.location.href = 'mypage.html?randomVar=454068934'; 

這將確保一個非緩存版本。我建議使用JavaScript生成的GUID。

1

我所做的就是在URL中傳遞一個隨機參數。即如果我需要獲取products.php,我打電話給products.php?rand = 23443545。 這種方式緩存不會產生干擾。

+0

哦,好吧。當我開始寫作時,沒有任何答案。慢Typer :-( – 2009-08-19 19:00:04

+0

大聲笑,我也是,我太遲了約10秒... – Zoidberg 2009-08-19 19:39:20

相關問題