2009-12-27 63 views
7

只要好奇,Google Maps API v3 javascript是否可以緩存在本地服務器上?Google Maps API JavaScript可以緩存嗎?

因爲有時我的內網網頁由於網速較慢而加載緩慢。否則,它會從本地服務器加載文件,並且僅在發出映射請求時才放慢速度。

我甚至準備好運行cron作業來更新javascript文件一段時間。

感謝您的任何意見。

回答

13

這是不可能的「原樣」。

當您向Google請求腳本時,他們沿腳本發送標題,這些標題包含「no-cache」指令。

因此,如果您希望它們是可以緩存的,則必須創建代理。不要將腳本src指向Google,而是將其指向您的服務器。您的服務器然後打電話給Google並將響應發送回客戶端。

這樣你就可以控制HTTP頭和緩存。您可以緩存腳本內容以減少與Google的關聯。

我不會建議有人在生產或任務關鍵網站上做這件事。所有的Google API都經常更新,並且或多或少地綁定在一起。如果某件事與別的東西不同步,那麼你很難追蹤你手上的錯誤。

希望有所幫助。

編輯:我聽說你把你的腳本放在文檔的HEAD部分。也許這會傷害你「感知」的頁面加載時間。嘗試在頁面的標記和onload事件中的映射初始化之前移動腳本的下載。

邁克

+0

謝謝你的解釋,你是正確的,谷歌幾乎每週都更新的API。我不認爲在這個角度來看。 – Nirmal 2009-12-27 06:17:29

+4

不客氣..第3版API更緊湊,比V2快,所以我不會擔心。相反,你應該看看你如何初始化你的東西,就像我說的,見http://developer.yahoo.com/performance/rules.html特別是部分「在底部放置腳本」。 – 2009-12-27 06:37:15

+0

+1了增加了幫助。雅虎的這個鏈接真的很有用。我沒有考慮很多性能問題,因爲這些頁面嚴格在Intranet中。但現在我覺得我應該認真考慮最佳實踐,因爲我們的組織處於分散到多個地理位置的邊緣。沒有微調,我真的會陷入麻煩。再次感謝。 – Nirmal 2009-12-28 03:37:12

3

恕我直言,你不能緩存它。 API腳本在Google服務器上調用對象。至多,您可以捕獲結果並將它們緩存爲圖像(但之後會失去交互性)。

如果可以緩存GMap結果,那麼人們只會在本地緩存Google的整個數據庫,我不認爲這是用戶協議的一部分;)。

如果你想離線地圖,你必須做非交互式圖像,或購買地圖服務器。

+0

地圖服務器!我會很喜歡,但不是我們的財務部門:(我不是在尋找緩存的結果。在GMAP是那些獲得在''裝載部分的JavaScript函數是什麼將全部的時間。如果我能緩存所取得的.js文件,我可以代替從本地服務器調用它。但是,地理編碼或地圖的請求可以直接從谷歌進行。 所有我看到的是,是否會有對這樣產生任何影響。 – Nirmal 2009-12-27 05:47:53

0

,不會讓你違反了谷歌的服務條款將維持OpenStreetMap的瓷磚用的OpenLayers腳本的本地緩存中觀看他們的選項。基本上,使用免費數據來創建您自己的地圖服務器。

如果有一些對您的Intranet非常重要的特殊興趣點,您可以確保它們位於OpenStreetMap中,並使用您所需的功能自行設置渲染服務器。畢竟,將某個學區覆蓋在某個區域內的每個學校將需要更多的工作,然後只顯示其中的學校製作的PNG。

如果您的地圖服務器在週末期間獲取/生成貼圖,而不是始終擊中Google地圖API,那麼在外部連接速度緩慢的情況下,延遲也會大大減少。

4

截至2016年,JS返回與「緩存控制:公衆,最大年齡= 1800」頭,所以它被緩存至少一個半小時。

相關問題