2015-04-23 106 views
3

我有權訪問交通數據服務器,從中獲取XML文件以及我需要的信息。 (例如:A點到B點:旅行時間20分鐘,距離18英里等)。XML到數據庫,我應該採取什麼路線?

我下載XML文件(已存檔),提取它,然後處理它並將其存儲到數據庫中。我只允許每次請求下載XML文件,但僅限於上次下載已經過去5分鐘。流量服務器上的XML每30秒更新一次,大約5分鐘。在5分鐘內,任何請求網頁的用戶都將從數據庫中檢索數據(無更新),從而限制對流量服務器發出的請求數量。

我目前的做法存在的問題是,當我得到新的XML文件時,整個過程需要一些時間(3-7秒),這使得用戶在得到任何東西之前等待太久。但是,如果不需要XML下載,並且所有數據都直接從數據庫中顯示出來,則過程非常快。 存檔的XML約爲100-200KB,而未存檔的XML約爲2MB。 XML文件包含來自3或4個狀態的流量數據,而我只需要一個狀態的數據。這就是我目前使用DB方法的原因。

這種方法很好嗎?我想知道是否應該直接從下載的XML文件中爲每個請求提取數據,並以某種方式限制XML文件從流量服務器下載的頻率。或者,任何人都可以指點我一個更好的方法?該XML的

樣本文件 sample of the XML file

這是怎麼看我的網站上 This is how it looks on my website

+0

定義「好」。什麼措施對你很重要? – duffymo

+0

我想到了CRON的工作路線,但這意味着無論用戶請求數據,它都會被更新。現在只有在請求時纔會更新,並且自上次更新後不超過5分鐘。 即使在請求新的XML時,也會有更快的訪問權限! – Cristian

+0

您可以創建定期訪問XML文件的CRON作業,解析它並將數據存儲到數據庫中。那麼用戶只能訪問數據庫數據。這樣用戶訪問數據時就不會有明顯的延遲。 –

回答

0

你需要在它每次更改時間下載XML。

但是,只有在下載文件所需的下一段時間內有活動用戶。

由於您無法預見未來,因此您不知道您是否會在接下來的7秒內收到用戶的請求。

然而,如果XML文件已更新,您可以通過HEAD請求找到答案。

因此,您可以創建自己的服務,每次更改時都會從遠程系統下載XML。如果確實經常不需要該日期,則可以將該服務配置爲不經常檢查和/或下載。

只要您可以通過對用戶行爲進行統計分析來了解下載服務的最佳配置,則系統的其餘部分可以獨立於此係統。

如果你需要更實時的話,你需要根據來自另一個系統的數據變化來配置新的服務,然後你需要開始在這兩個系統之間雙向交換數據,這些更復雜,並且可能導致更多的副作用。但是從你提供的數字來看,這個層次的細節可能並不需要,所以我不會在意它。

相關問題