Lightning Data Service — Shared Caching & Change Detection

DEX475 - Work with Salesforce Data

📄 第 274 页 🎬 视频课程

课程章节介绍

各位同学,今天我们来聊聊 Lightning Data Service,简称 LDS。你可以把它想象成 Salesforce 里一个聪明又体贴的数据管家,专门帮我们管缓存和同步数据。 LDS 最核心的能力,就是它那个“共享缓存”。什么意思呢?假设你页面上有三个不同的组件,都在展示同一个客户记录,比如张三的信息。如果没有 LDS,这三个组件可能各自去服务器问一遍,不仅浪费请求,还可能因为返回时间不同,显示的数据不一样。但有了 LDS,这条张三的记录只会被请求一次,然后放在共享缓存里,所有组件都从同一个地方拿数据,看到的版本保证是一模一样的。这就保证了数据的一致性,而且毫不费力。 那要是有组件修改了这条记录怎么办?别担心,LDS 会自动检测到改动。一旦记录发生变化,或者缓存自然过期了,它就会通过我们熟悉的 @wire 装饰器,自动把最新的数据推送给所有订阅了这条记录的组件。你完全不用手动去刷新,页面自己就更新了,就好像有个后台播放器,一直在帮你同步最新画面。 在性能优化方面,LDS 也做了很多贴心设计。比如渐进加载,数据可以一块一块的出来,不用等全部就绪;客户端缓存让数据就近存放,速度飞快;当数据更改时,缓存会自动失效,不会给你旧的数据;而且它还会把多个服务器请求打包到一起发送,再把重复的请求合并掉,这个叫做请求批量化与重复数据删除,能帮我们节省很多服务器资源。 说到布局元数据,它比较特殊。LDS 给页面布局也开了一个独立的持久缓存,这个缓存有自己单独的超时时间。但有一点要注意:如果管理员修改了页面布局,很可能需要你注销再重新登录,变化才会立刻体现出来,因为那是持久化的,不会频繁去检查。 讲到底层,LDS 实际上是建立在 UI API 之上的。UI API 非常强大,它能在一次请求里就把数据和相关的元数据一起给到你。而且它完全遵从 Salesforce 的安全设置,什么对象权限、字段级安全、共享规则,它都会自动替你遵守,不用担心泄露不该看的数据。 那么,是不是所有数据 LDS 都能管呢?并不是。记住,Apex 方法拿回来的数据,LDS 可不插手。如果你用了 Apex 控制器去查数据,抱歉,没有这种自动缓存、自动推送的好事了,你必须自己写代码来手动刷新缓存。所以一般能用 LDS 的地方,我们尽量用,因为它省心又安全。 好了,这就是 Lightning Data Service 的简要介绍。用好它,你的组件数据就能又准又快,还天生遵规守矩。大家课后可以找个小例子感受一下,下节课见!

关键词

LWC Lightning Web Components Salesforce