【问题标题】:ASP.NET MVC - Loading Maxmind dat fileASP.NET MVC - 加载 Maxmind dat 文件
【发布时间】:2010-08-09 23:05:20
【问题描述】:

我计划使用 Maxmind 的 DAT 文件在我正在开发的 ASP.NET MVC 应用程序中提供一些基本的地理定位功能。 DAT 文件大约 17mb,我想知道在我的应用程序中加载它的最佳方法是什么 - 显然我不想在每次需要一些地理信息时都加载它,我认为最好的做法是在应用程序启动时将其加载到共享变量中。

其他人是如何处理这个问题的?有什么建议吗? 谢谢

日本

【问题讨论】:

    标签: c# asp.net-mvc geolocation


    【解决方案1】:

    缓存是一个糟糕的地方来存储它。它可能会在没有通知的情况下被清除,因此您必须在它被删除时重新加载它。

    Maxmind supplies a .NET API 处理他们的 DAT 文件。打包为 tar.gz(描述为“用于 GeoIP 城市、国家、ISP 等的开源 C# API”)已经有一个选项可以有效地将数据加载到私有缓存中,例如:

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

    【讨论】:

    【解决方案2】:

    在我看来,HttpRuntime.Cache 是保存这些数据的最佳位置。有关如何从缓存中添加和删除内容的信息,请参阅 here。

    【讨论】:

    • +1 - 正是我所建议的。事实上,这种机制可以根据您的需要简单或功能齐全。在我的应用程序中,我已经将它发展到这样一个阶段,即 lambda 和匿名函数会处理我所有的“强类型”对象,因此对缓存的请求要么填充它,要么获取给定键的内容。这是一个绝对需要计划的策略,但是一旦确定了您的“关键”计划,那就不费吹灰之力了。我可以删除一个指向我的实现的链接(可单元测试,因为它使用到包装器的接口)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-29
    • 1970-01-01
    • 1970-01-01
    • 2017-05-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多