2010-08-09 45 views
1

我打算使用Maxmind的DAT文件在我正在開發的ASP.NET MVC應用程序中提供一些基本的地理位置功能。 DAT文件大約爲17mb,我想知道在我的應用程序中加載這個最好的方法是什麼 - 顯然我不想每次需要加載一些地理信息時加載它,並且我認爲最好的方法是在應用程序啓動時將其加載到共享變量中。ASP.NET MVC - 加載Maxmind dat文件

其他人還有什麼辦法呢?任何建議? 感謝

JP

回答

4

Cache是​​一個可怕的地方來存儲這個。它可以在沒有通知的情況下被清除,因此每當它被刪除時都必須重新加載它。

Maxmind supplies a .NET API處理他們的DAT文件。包裝成一個tar.gz(描述爲「開放源碼C#的API的GeoIP城市,國家,ISP,多」)的一個已經有一個選項可以將數據有效地加載到專用高速緩存,例如:

var lookupService = new LookupService("path.to.my.dat", LookupService.GEOIP_MEMORY_CACHE); 
+0

我用這個API取得了巨大的成功。這真的很快。 – jessegavin 2010-08-13 02:27:58

+0

除了原始的MaxMind C#API版本(位於http://www.maxmind.com/app/csharp), ,您可以嘗試使用http://code.google.com/p/geoipsharp稍微修改過的版本 – Evereq 2012-01-09 15:37:49

2

HttpRuntime.Cache在我看來,是你可能持續這種數據的最佳場所。有關如何從緩存中添加和刪除內容的信息,請參見here

+0

+1 - 正是我所建議的。事實上,這種機制可以像你想的那樣簡單或者全面。在我的應用程序中,我已經將它發展到了一個階段,即lambda和匿名函數負責處理所有「強類型」對象,以便對緩存的請求填充它或獲取給定密鑰的內容。這是一個明確需要計劃的戰略,但一旦確定了「關鍵」計劃,這是一個不大智慧的計劃。我可以刪除一個鏈接到我的這個實現(單元測試,因爲它使用接口包裝) – 2010-08-10 08:14:54

+0

甜,聽起來像它會工作的一種享受。謝謝! – 2010-08-10 13:08:14