我有一个大约有 4000 个页面的网站,它在其中大约 400 个页面上使用了细粒度的权限。对于访问 /admin/ 页面的某些用户,页面会在大约一秒钟内加载。对于其他人,页面可能需要大约 5 分钟才能加载。
对代码的分析和调试似乎表明关注的领域是 wagtail\core\models.py
explorable_pages()
函数,尤其是
page_permissions = Page.objects.filter(group_permissions__in=self.permissions)
线。至少对于我的数据,这似乎返回了 2000 多个结果,每个结果重复了 6 或 7 次(为每个权限类型返回一个结果?)。只有大约 400 个不同的结果。
添加 distinct()
改善问题
page_permissions = Page.objects.filter(group_permissions__in=self.permissions).distinct()
将数字减少到 400 左右。我的页面加载时间现在约为 90 秒 - 不理想但更好。
以上是 wagtail 的真正问题还是我遗漏/不理解某些东西?
我可以做些什么来加快页面加载速度?网站权限的设置方式是否符合典型 wagtail 网站的预期?
(请原谅我的无知,我可能使用了错误的术语 - 我是 Python/Django/Wagtail 的 Java 程序员新手)