【发布时间】:2011-02-01 04:48:11
【问题描述】:
我在一个 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 应用程序处理缓存(这不是低级缓存)。
【问题讨论】:
-
你找到解决办法了吗?
标签: django django-sites django-caching