在 Frappe 框架中,一切围绕文档展开,包括列表、读取、创建、更新、审核、提交和删除文档。典型的列表视图中,每行代表一个文档,可配置重要字段显示在列表视图中。列表视图很重要,曾占 Frappe Cloud 约 20%的 CPU 时间,已多次重构,在用户体验、正确性和性能方面不断改进。以文档计数为例,2017 年引入计数功能以提高代码质量和用户体验,用户可快速了解匹配特定过滤器的文档数量,但在处理数百万条记录的大型数据库时,此设计不可行,无索引时计数操作变为 O(N),查询可能耗时超 2 分钟,有些数据库即使不应用过滤器也无准确记录计数,为此提供了禁用计数和自动刷新的选项。之后进行了增量优化,如减少自动刷新的负载、微优化减少数据库访问和缓存等,但仍存在问题,如计数端点仍在耗时排名前列,某些情况下数据库仍会扫描整个表,最后通过设置语句超时限制为 1 秒来解决,目前几乎所有用户都无需使用“禁用计数”配置。总结得出,select count(*)
虽有弊端但仍值得为用户体验保留,全局请求超时不够好,频繁请求应设计有合理的运行时间,逃生舱口是重要的短期干预但应做到无需手动干预。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。