2012-06-20 85 views
0

我不是程序員,但我自己爲我的網上商店做了所有的定製。我使用禪宗車。我試圖讓它對國際客戶更加友好,並且它變得明顯,禪車在粗略級別上只是「國際」。它非常以美國爲中心,並向其他「常見」國家(如加拿大,英國等)點頭示意。如何組織javascript操作的國家和區域數據庫?

無論如何,我正在嘗試重新填寫申請表,以便地址對任何訪客,不管他們的國家。所以他們選擇國家和已經建立的「國家」自動填充......(只需將每個國家的所有「州」手動添加到數據庫中),但問題是JS變得相當龐大。除此之外,我想改變標籤的顯示方式。即。對於來自阿根廷的遊客,「城市」應爲「直轄市」。一個明顯的例子就是加拿大的「省」,等等。但是,那麼JS就會變得更加龐大。

最後,你會得到一系列巨大的if語句,涵蓋大約260個國家,每個國家平均約有8到10個「州」,然後每個州都有自己的「街道」,「郊區」,「城市」 「國家」和「郵政」標籤。

所以我的問題是...這可以有效嗎?這可以是「精簡版」嗎?我們是否真的必須用所有這些數據填充客戶端瀏覽器,或者是否有更好的方法(並且仍然保持動態,而無需額外的頁面加載)?

還是可以把它堆在那裏?在我的本地服務器上,它的加載速度相當快。我沒有在Web服務器上試過它,我真的沒有辦法在「慢速」連接上進行測試,所以我只想從一開始就對它進行正確的編碼。

謝謝。

+0

您可以加載客戶端中的所有國家和所有州,但這是不好的做法。你只應該加載你需要的數據。用戶選擇一個國家,並且向服務器發出ajax請求以返回相應的狀態。這將是一個更好的方式來做到這一點。 –

+0

在很多情況下,我會同意你的看法,但在這種情況下,我認爲260個國家並不是大量的數據,尤其是在壓縮之後。我預計ajax請求可能比第一次下載數據花費的時間更長。我認爲不好的做法是對這個問題的明確裁減 - 我認爲這取決於情況。 –

回答

1

如果您打算改善用戶界面,那麼數據量並不是很大。

你的服務器應該實現一個gzip方法來在發送到客戶端之前壓縮數據,並且重複的數據壓縮得非常好。

我想你應該使用的數據結構是這樣的JSON

var countryData = [ 
    { name: "USA", 
    provinceName: "City", 
    suburbName: "Suburb" 
    }, 
    { name: "Canada", 
    provinceName: "Province", 
    suburbName: "Suburb" 
    } 
] 

你可以把所有在一個單獨的文件,以幫助保持你的JavaScript組織,並使用script標記之前加載它你的主腳本運行。

此外,爲了測試性能命中率,我會使用一個工具,如YSlow,它運行在firebug擴展中,用於firefox瀏覽器。它由yahoo製作,並允許您查看頁面所有組件的加載時間,包括緩存或不加載,並允許您檢查哪些文件是壓縮或不壓縮的。

+0

聽起來不錯。謝謝比利。 – bcsteeve

+0

雖然你的例子只包含標籤名稱,所以我想知道你的「這不是那麼大」的思想是否缺少州名?這就像你說的,但也是一個1到100個「狀態」的陣列(美國有50個,加拿大有13個,西班牙有船載......等等)。這會改變你的想法嗎?或者還不是那麼多? – bcsteeve

+0

我認爲它仍然可以,但測試是創建JSON數據,包括您需要的所有數據(或者同樣代表它的好的虛擬數據),然後使用gzip對其進行壓縮。那麼你可以自己判斷,如果它是值得你需要的功能的gzip JSON數據文件的文件大小。我希望壓縮後的最終文件在20K左右,這有點沉重,但我不會說在現代網站中不可行,通常重量在150-200K之間 –