我有一个大约有 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 网站所期望的方式设置网站权限?
(请原谅我的无知,我可能使用了错误的术语 - 我是 Python/Django/Wagtail 的 Java 程序员新手)