我在一个 Django 应用程序下有许多站点,我想在这些站点上实现站点范围的缓存。然而,事实证明这是一个真正的麻烦。
发生的事情是settings.CACHE_MIDDLEWARE_KEY_PREFIX
在启动时设置一次,我无法继续根据当前站点的内容进行更改。因此,如果一个 url 页面http://website1.com/abc/
被缓存,则http://website2.com/abc/
呈现缓存版本的http://website1.com/abc/
. 这两个网站都在同一个 Django 实例上运行,因为 Django Sites 似乎允许我们这样做。
这是不正确的方法吗?因为我无法CACHE_MIDDLEWARE_KEY_PREFIX
在运行时动态设置,所以我无法使用 Django 的站点范围缓存来缓存多个站点。我也无法为模板和视图缓存执行此操作。
我得到的印象是,真正需要设置的方式是每个站点都需要自己的 Django 实例,除了设置文件之外几乎相同,在我的情况下,设置文件的区别仅在于CACHE_MIDDLEWARE_KEY_PREFIX
. 这些 Django 实例都读取和写入同一个数据库。这让我很担心,因为它可能会产生许多新问题。
我是走在正确的轨道上还是我误会了多站点架构需要如何工作?我检查了 Django 文档,并没有真正提到如何为服务于多个站点的 Django 应用程序处理缓存(这不是低级缓存)。