【问题标题】:Best practice when using folium on django在 django 上使用 folium 的最佳实践
【发布时间】:2015-11-10 04:44:44
【问题描述】:

我正在使用 django 构建一个应用程序,它将显示投票最多的项目的地图。

我不是一个经验丰富的网络开发者,我想知道应该在何时何地构建它们的地图。 (例如这一行 --> )

map_osm.create_map(path='osm.html')

现在我放置在我的views.py中,每次用户查看它时它都会构建地图,问题是——它不会为服务器创建太多开销计算吗?

我考虑过每 x 票更新一次,或者保留一个可以管理它的模型。

在这种情况下最好的做法是什么?

【问题讨论】:

标签: python django dictionary leaflet folium


【解决方案1】:

缓存是最好的方法,但由于您不是经验丰富的开发人员,我将为您提供替代解决方案。

每次用户访问您网站的该部分时,您似乎都在重新计算地图。一种解决方案是直接链接到 html 文件,并通过 CRON 任务或 Python 计时器每 30 分钟(或任何您需要的)更新文件。这样,您只需每半小时为所有用户计算一次。

【讨论】:

    【解决方案2】:

    阿米特。至于folium和为用户构建地图,是的,当很多用户想要计算时,它可以为服务器带来艰苦的工作。 有解决方案:

    1. 使用 Redis 或 Memcached 进行缓存(Django 有电池)。此时,如果坐标相同,您可以设置缓存生命周期 ~ 几秒到几小时。 Django 提供视图缓存、模板缓存等。
    2. 将映射结果保存到 db,因此如果用户计算的坐标与昨天相同 - Django 将从 db 获取结果并更快地显示到模板。
    3. 如果没有满足您的要求 - 只需让 django 更快,关闭未使用的中间件,使用 gunicorn\uwsgi 运行和部署。将更多 RAM 和 CPU 内核(部署时)定位到 Web 服务器。
    4. 您可以尝试分析您的项目,这样您就可以找到项目中计算量最大的部分。当你找到时 - 让它更快。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-30
      • 1970-01-01
      • 2016-06-17
      • 2013-05-27
      • 2018-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多