前端缓存和会话后端

前端缓存

我们不建议在仪表板中使用前端缓存工具。仪表板呈现的是直接来自 OpenStack API 请求的动态内容,像 varnish 这样的前端缓存层可能会阻止正确的内容显示。在 Django 中,静态媒体直接由 Apache 或 Nginx 提供服务,并且已经受益于 Web 主机缓存。

会话后端

horizon 的默认会话后端 django.contrib.sessions.backends.signed_cookies 将用户数据保存在浏览器中签名的(但未加密的)cookie 中。由于每个仪表板实例都是无状态的,上述方法提供了实现最简单的会话后端扩展的能力。

应该注意的是,使用这种实现方式,敏感的访问令牌将存储在浏览器中,并会随每个发出的请求一起传输。后端确保会话数据的完整性,即使传输的数据仅由 HTTPS 加密。

如果您的架构允许共享存储,并且您已正确配置了缓存,我们建议将 SESSION_ENGINE 设置为 django.contrib.sessions.backends.cache,并将其用作基于缓存的会话后端,使用 memcached 作为缓存。Memcached 是一种高效的内存键值存储,用于存储可用于高可用性和分布式环境中的数据块,并且易于配置。但是,您需要确保没有数据泄露。Memcached 利用空闲 RAM 存储频繁访问的数据块,充当重复访问信息的内存缓存。由于 memcached 利用本地内存,因此没有数据库和文件系统使用的开销,从而可以直接从 RAM 而不是从磁盘访问数据。

我们建议使用 memcached 而不是本地内存缓存,因为它速度快,数据保留时间更长,是多进程安全的,并且具有在多个服务器之间共享缓存的能力,但仍然将其视为单个缓存。

要启用 memcached,请执行以下操作

SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
CACHES = {
    'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache'
}

有关更多详细信息,请参阅 Django 文档