nginx GeoIP 缓存键

nginx GeoIP Cache Key

我想在 nginx 中使用 GeoIP 来根据国家提供不同的页面。我也想缓存一切。

当美国用户访问我的主页时,我希望他们从缓存中看到美国版主页。当英国用户访问我的主页时,我希望他们从缓存中看到英国版主页。

安装 GeoIP 模块后,我可以只将国家代码放入我的缓存键中吗?这是提高性能的最佳方法吗,因为现在服务器将为每个 IP 查找国家/地区。我不知道这是否重要。

我正在考虑获取浏览器的 userLanguage 设置并通过 AJAX 发送,然后缓存它。只有少数字符需要进行地理定位。

Best way to determine user's locale within browser

按照标准教程安装 GeoIP 模块后,我只需将国家代码放入我的缓存键中,它就可以工作了:

$scheme$request_method$host$request_uri$geoip_country_code

我读到 nginx 在内存中加载 GeoIP 数据库,所以性能似乎保持不变。

我发现其他问题比 GeoIP 查找更能影响性能:

  1. 404 个错误击中了 CGI
  2. Cachekey 不包含查询字符串。与国家/地区相比,查询字符串的变化方式更多。
  3. 正在清除缓存。在通过删除所有文件清除缓存之前。现在我正在考虑使用 wget 获取新页面,然后将它们复制到缓存中。