2011-03-03 74 views
0

基於this教程我建立了一個功能正常的頁面。我在頁面上添加了幾個下拉框,並基於this snippet,能夠相應地過濾結果。所以,在實踐中,所有事情都應該如此。但是,我的問題是關於程序的效率。現在,過程如下所示:優化性能:通過PHP,mySQL和Javascript的谷歌地圖

1.)用戶訪問頁面 2.)正文onload()被調用 3.)Javascript調用一個PHP腳本,它查詢數據庫(基於傳遞的標準通過URL)並將該查詢導出到XML文件。 4.)然後通過用戶本地機器上的javascript解析XML文件。

對於任何一個搜索,可能會有幾千個結果(因此需要在地圖上放置數千個標記)。正如您可能已經猜到的,放置所有標記需要很長時間。我有一些想法來加速它,但想與有經驗的用戶聯繫,以驗證我的邏輯是否正確。我願意接受任何建議!想法#1:有沒有一種方法(它會加快速度?)運行查詢一次,通過PHP生成一個XML文件,其中包含所有可能的結果,將XML文件存儲在本地,然後通過JavaScript的?

想法#2:在服務器上創建一個cron作業,將XML文件導出到已知位置。而不是使用「Gdownloadurl(phpfile.php」,我會使用gdownloadurl(xmlfile.xml)。因此,每次用戶更改下拉框的值時都不需要運行新查詢。

想法#3:而不是將標準傳遞迴php文件(通過URL),我應該只是通過JavaScript篩選結果,然後將標記放置在地圖上嗎?

我看過很多網頁,放置噸和噸的標記一個谷歌地圖,它並不需要幾乎只要我的應用程序。在這種情況下的標準做法是什麼?

謝謝!

編輯:我的邏輯中可能存在一個缺陷:如果我要將所有結果導出到XML文件,那麼如何(除JavaScript以外)可以過濾這些結果?

回答

0

你的邏輯是健全的,但是,我可能不會在Javascript中進行過濾。如果用戶的電腦速度不是很快,那麼性能會受到不利影響。根據緩存資源(在你的情況下是xml)執行過濾服務器端更好。

數據庫可能是此操作中的最大瓶頸,因此緩存結果很可能會顯着加快應用程序的速度。您也可能會認爲您已正確設置密鑰以儘可能快地進行查詢。

+0

我最終將選擇查詢更改爲僅包含需要的8-10列,而不是原始選擇*,其中包含300列。這顯然加快了速度。 但是,問題仍然存在,如何去緩存XML文件?我應該只是運行一個腳本,將文件保存到可公開訪問的文件夾中?或者,還有更好的方法? – Edward 2011-03-04 15:15:13

+0

將XML文檔存儲在文檔根目錄之外,並有一個PHP腳本接受它需要過濾的參數,並讓PHP腳本輸出過濾的XML文檔。 – 2011-03-04 18:36:11

+0

考慮這個問題,基於給定參數的哈希值,您可能會更好地存儲查詢的過濾版本。這樣,您在獲取未緩存的查詢時只會遭受性能損失,隨後的請求可以簡單地使用緩存版本(不需要過濾)。畢竟,3k行不是性能影響的重要部分(但應儘可能避免)。 – 2011-03-04 18:38:13