我正在尝试使用MaxMind GeoIP数据库,我注意到C API提供了一堆不同的缓存模式作为GeoIP_open初始化调用的标志.
GEOIP_MEMORY_CACHEGEOIP_CHECK_CACHEGEOIP_INDEX_CACHEGEOIP_MMAP_CACHE这些是标志位,因此您可以提供它们中的任何一组,但是没有关于这些标志的含义或它们的作用,或者(或许最重要的)它们如何交互的文档.
该基准测试页面显示,GEOIP_MEMORY_CACHE使得它的速度,同时GEOIP_CHECK_CACHE使得它更慢,但没有迹象显示,为什么你会想使用(或不使用)这些标志.
小智 4
他们的 github 页面描述了这些缓存的用途。
GEOIP_STANDARD - Read database from file system. This uses the least memory.
GEOIP_MEMORY_CACHE - Load database into memory. Provides faster performance but uses more memory.
GEOIP_CHECK_CACHE - Check for updated database. If database has been updated, reload file handle and/or memory cache.
GEOIP_INDEX_CACHE - Cache only the the most frequently accessed index portion of the database, resulting in faster lookups than GEOIP_STANDARD, but less memory usage than GEOIP_MEMORY_CACHE. This is useful for larger databases such as GeoIP Organization and GeoIP City. Note: for GeoIP Country, Region and Netspeed databases, GEOIP_INDEX_CACHE is equivalent to GEOIP_MEMORY_CACHE.
GEOIP_MMAP_CACHE - Load database into mmap shared memory. MMAP is not available for 32bit Windows.
Run Code Online (Sandbox Code Playgroud)
可以使用位运算符组合这些选项。例如,您可以通过调用以下命令同时使用 GEOIP_MEMORY_CACHE 和 GEOIP_CHECK_CACHE: GeoIP_open("/path/to/GeoIP.dat", GEOIP_MEMORY_CACHE | GEOIP_CHECK_CACHE);
| 归档时间: |
|
| 查看次数: |
3571 次 |
| 最近记录: |