【发布时间】:2022-08-05 19:46:51
【问题描述】:
当我阅读 SWR 反应钩子文档和 Stale-While-Revalidate 方法时,似乎 swr 只是在短时间内使用缓存数据占位符来快速向用户显示结果。 (别误会我还是觉得swr有很多好处)
我想将 SWR 与 HTTP 静态内容缓存进行比较以说明问题。
就 HTTP 静态内容缓存又名 HTTP 缓存而言,
- 客户端获取
Cache-Control或Expires标头附带的静态内容。 - 下次需要提取相同的内容时,只要缓存文件可用且基于
Cache-Control或Expires有效。它使用缓存的数据和不发送 HTTP 请求到服务器。然而,当谈到 swr useSWR,
- 它将 HTTP 响应数据保存到本地缓存。
- 下次需要获取相同的数据。它使用缓存中的数据(如果存在)和发送 HTTP 请求到服务器(重新验证)以检查数据是否已更改。
我知道 HTTP 缓存和 swr react 钩子有很多更多的功能,但这只是 HTTP 缓存和 swr 反应钩子的简要总结。
我的问题是
如果 swr 每次使用缓存数据时都必须重新验证,除了来自多个组件的同一 API URL 的并发请求之外,它不会减少请求的数量,对吧?
如果是这样,这种缓存机制是否可以更快地向用户显示数据,并且可能会阻止来自多个组件的同一 API URL 的多个并发请求?
我对 swr 很陌生,如果我误解了,请告诉我。
谢谢!
swr 文档:https://swr.vercel.app/
Mozilla 上的 HTTP 缓存:https://developer.mozilla.org/en-US/docs/Web/HTTP/Caching
-
\"swr 必须在每次使用缓存数据时重新验证\"- 事实并非如此。有一段时间 SWR 只会使用缓存的数据,不会发送任何请求。在这段时间过去后,再次需要数据,然后将发出新请求以重新验证数据。
标签: reactjs caching next.js swr