典型场景:一堆非常需要耗时的数据,每次更新都需要重新计算,但是更新的频率并不高。
使用缓存可以有效的减少计算和查找时间。
1. 数据快照
典型场景:Google Docs 文档后端返回的模型,优先利用快照
Google Docs 文档服务器会根据某种策略,对 Google Docs 文档的用户操作变更集(changeset)合并后的结果进行一次快照,确保用户再次打开 Google Docs 文档时,优先使用快照内容,节省每次服务端实时合并变更集的耗时。
2 缓存重复 dom api 调用结果
典型场景: Google Docs 文档在进行文字布局计算时,会高频执行 getBoundingClientRect 获取文字节点布局信息。
对于相同字体字号的文字, 如果只改变文字颜色, 文字尺寸不变, 可以复用结果.
3 基于数据模型缓存结果
典型场景:Google Docs 表格的 html 模板构建流程
在 Google Docs 表格中,基于单元格的行索引,列索引,单元格属性的三个组合属性,创建单元格 html 片段缓存对象,这样能够在表格的部分单元格发生属性变化之后,仅更新部分单元格的 html片段,达到重用历史计算结果的效果。