2012-11-26 53 views
1

我有我爲網站創建的自定義地圖圖塊的自定義地圖。每當我更新這些地圖切片並將其部署到網站時,我都需要我的用戶清除舊切片的緩存,以便他們下載新的切片。如何部署新的地圖圖塊,強制用戶緩存清除?

由於地圖切片是由JavaScript加載的,因此不能簡單地強制用戶使用SHIFT-Refresh獲取新文件。

到目前爲止,我能想到的唯一方法是更改​​瓷磚從中加載的文件夾名稱。喜歡的東西:

tiles-20121125 <--- todays date 

所以每瓦被更新時,我只需更改文件夾名稱,新名稱,迫使訪問者下載新的瓷磚。

有沒有更好的方法? Google Maps v3 API中內置的內容可能是什麼?

+0

我使用'.... tile.png?r ='+ Math.random(); (每次強制重載)。 – Marcelo

+0

謝謝,但我希望我的訪問者能夠在99%的時間內緩存切片,以最大限度地提高性能並最大限度地降低帶寬。當我添加新的瓦片時,只需要他們獲取新的瓦片 –

回答

2

瀏覽器根據請求的url緩存圖像數據,這也是ajax緩存。 谷歌地圖API不提供任何方法來做到這一點。

所以最簡單的方法,你可以追加版本作爲查詢參數。

function getTileUrl(point, number) { 
    return "http://your.server.com/tiles/" + point.x + "_" + point.y + ".png?v=20121125" 
} 

然後Google Maps API從URL加載圖像數據。 加載圖像的機制可能是:

var img = new Image(); 
img.src = tile_url; 

類似的東西。 (實際上Google Maps API最近使用canvas標籤而不是Image)

+0

啊查詢參數,當然是。我總是用'js'和'css'文件來做這件事。甚至沒有想過用瓷磚做這件事。謝謝! –