是否可以使用JavaScript來控制瀏覽器是否轉到服務器以獲取圖像或瀏覽器緩存?我可以強制瀏覽器進行服務器調用,否則會使用緩存的圖像?我知道我可以簡單地將一個查詢字符串附加到我的圖片網址,但是,如果我理解正確,那是可行的,因爲瀏覽器將它視爲新圖片。我希望舊圖像在緩存中被替換。是否有防止圖像被緩存的客戶端方法?
4
A
回答
0
你不能用標準的img
標籤做這樣的事情。您可以爲圖像創建一個XMLHttpRequest並設置if-modified-since
標題。這應該在緩存中替換舊的圖像:
var url = "http://www.mysite.com/images/myimage.png";
var xhr = new XMLHttpRequest(); // or x-browser compat function
xhr.open("GET", url, true);
xhr.setRequestHeader("If-modified-since", "Thu Jan 1 00:00:00 UTC 1970");
xhr.onreadystatechange = function()
{
if (xhr.readyState == 4 && xhr.status == 200)
document.getElementById("myImg").src = url;
}
xhr.send();
1
你可以在頁面的緩存控制,設置爲「無緩存」像這樣在使用元標籤:
<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
和
<META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">
您還可以設置頁面「過期」在過去,這一點在理論上會導致瀏覽器檢查最新版本:
<META HTTP-EQUIV="EXPIRES" value="some date in the past" />
請注意,「過去的某個日期」必須是GMT RFC 1123 format。 See Here
希望這有助於:
注意,你可以只在HTTP頭本身發送這些。
+0
另外,我將開始一個名爲NO CACHE的編程主題ska核心樂隊... – MisterMister 2010-04-24 07:48:02
相關問題
- 1. 客戶端圖像緩存
- 2. ASP.Net客戶端圖像緩存
- 3. 防止客戶端調用服務器端方法
- 4. 防止HTTP客戶端擊中具有緩存的服務器(iphone)
- 5. 客戶端緩存問題?
- 6. Apollo客戶端緩存
- 7. Web客戶端緩存
- 8. Resteasy客戶端Http緩存
- 9. 客戶端緩存vs Cookie
- 10. 禁用客戶端緩存
- 11. HTML/PHP頁面被緩存(客戶端)時,它不應該是
- 12. 是否UIImageView緩存圖像?
- 13. 是否UIImage緩存圖像?
- 14. 動態圖像,防止從生成圖像的頁面緩存
- 15. 如何防止客戶端的回傳?
- 16. 防止返回客戶端的ajaxSubmitHandler
- 17. 有沒有辦法繞過客戶端的清漆緩存?
- 18. 是否有輕量級的客戶端HTML包含方法?
- 19. 如何防止緩存響應中的Silverlight客戶端Http請求?
- 20. 是否有可能檢測動畫gif圖像客戶端?
- 21. 如何防止.NET JSON被緩存
- 22. 是否有隻有一個網頁上只緩存圖像的方法嗎?
- 23. Webapi中的服務器端緩存和客戶端緩存
- 24. 胖客戶端的客戶端緩存庫/框架
- 25. 防止WCF客戶端反序列化
- 26. 防止客戶端超載服務器?
- 27. 如何防止libwebsockets客戶端超時
- 28. 是否將緩存控制設置爲公共防止私有緩存?
- 29. XMLRPC C#客戶端Python客戶端 - 方法不存在
- 30. 是否有可能取代HTML中的客戶端緩存文件
感謝Andy E的頭。簡單地做這件事:document.getElementById(「myImg」)。src = url – morgancodes 2010-04-23 23:59:57
@morgancodes:當您將圖像src'設置爲url時,它將使用瀏覽器的默認緩存方法並檢索當前緩存的圖像。在提出請求時,沒有辦法設置請求標頭或任何其他HTTP相關選項。我的答案中的方法強制瀏覽器下載圖像的新副本並將其保存在緩存中,然後將圖像元素切換到新緩存的版本。 – 2010-04-24 09:16:32
很酷。謝謝。現在就試試看。 – morgancodes 2010-04-27 16:50:24