首页 > 其他分享 >SWR " stale-while-revalidate " 立即使用缓存数据 + 后台异步刷新

SWR " stale-while-revalidate " 立即使用缓存数据 + 后台异步刷新

时间:2024-02-27 20:22:53浏览次数:25  
标签:revalidate 异步刷新 while 缓存数据 stale SWR 数据

在软件开发中,SWR 是 " stale-while-revalidate " 的首字母缩写,这是一种在网络应用(尤其是Web应用)中用于数据获取和缓存的策略。

这个策略最早由 Next.js 团队提出并在其数据获取库 next/swr 中实现了这个思想。

SWR 的工作原理如下:

  1. 立即使用缓存数据
    当页面首次加载或数据需要更新时,SWR 会优先尝试从缓存中获取数据。如果有缓存数据,即便它可能不是最新数据(stale),也会立即呈现给用户,从而提供更快的响应速度和更好的用户体验。

  2. 后台异步刷新
    同时,SWR 会发起一个后台请求去服务器获取最新的数据。一旦服务器返回了新数据,SWR 将更新缓存并重新渲染 UI。

通过这种方式,SWR 既保证了用户能够快速看到页面内容(即使数据并非最新),又能确保最终用户看到的是最新数据,从而在延迟加载和数据新鲜度之间取得平衡。

这种策略非常适合实时性要求不高但又需要保持数据尽可能更新的应用场景。

标签:revalidate,异步刷新,while,缓存数据,stale,SWR,数据
From: https://www.cnblogs.com/longmo666/p/18037956

相关文章

  • do{}while(0)用法
    更安全的展开宏定义#defineDOSOMETHINGfoo1();foo2();if(condition) DOSOMETHING/*if(condition) foo1();foo2;*/以上代码会导致foo2();始终运行。改为do{}while(0)就可以。do{}while(0)会在任何场景下表现一致。#defineDOSOMETHING\ do{\ foo1()......
  • java的基本循环结构之while循环
    1、while循环◆while是最基本的循环,它的结构为:while(布尔表达式){//循环内容只要布尔表达式为true,循环就会一直执行下去。我们大多数情况是会让循环停止下来的,我们需要一个让表达式失效的方式来结束循环少部分情况需要循环一直执行,比如服务器的请求响应监听等。循环条件一......
  • for 循环 和 while循环的区别
     001、for循环:for循环的终止条件在for语句后面已经提前已知[root@pc1test1]#for((i=1;i<=3;i++));doecho$i;done##终止条件i<=3;i的变化规律;提前已知123 002、while循环;while循环的终止条件是在循环体中动态变化的[root@pc1test1]#i=1[roo......
  • while循环与until循环的区别
     001、while循环:条件满足一直执行[root@pc1test1]#i=1##条件满足,一直执行[root@pc1test1]#while[[$i-le3]];doecho$i;i=$((i+1));done123 002、until循环;条件不满足一直执行[root@pc1test1]#i=1##条件不满足,一直执行,与while循环相......
  • Dowhile循环
    publicclassdowhille{publicstaticvoidmain(String[]args){/*do{代码语句}while(布尔表达式)*///do....while循环至少会执行一次inti=0;intsum=0;do{sum=sum+i;......
  • While循环
    publicclassWhile{publicstaticvoidmain(String[]args){/*while(布尔表达式){循环内容}*///输出1-100inti=0;while(i<100){i++;System.out.println(i);//......
  • .NET(C#)遍历(for,foreach,while)字典(Dictionary)的几种方法
    ​ .NET(C#)中,Dictionary<TKey,TValue>是一种非常实用的集合类型,用于存储键值对的集合。遍历Dictionary的方法有多种,包括使用for循环、foreach循环和while循环。使用foreach循环是遍历Dictionary中所有键值对最常见和最简单的方法。for和while循环在遍历Dic......
  • 用while或for循环输出1-1000之间能被5整除的数,并且每行输出3个
    需求用while或for循环输出1-1000之间能被5整除的数,并且每行输出3个代码实现packagecom.jichu.struct;publicclassForDemo02{publicstaticvoidmain(String[]args){//用while或for循环输出1-1000之间能被5整除的数,并且每行输出3个的需求for(......
  • 深入理解 Java 循环结构:while、do while、for 和 for-each 循环
    Java循环循环可以执行一个代码块,只要达到指定的条件。循环很方便,因为它们节省时间,减少错误,并使代码更易读。JavaWhile循环while循环会循环执行一个代码块,只要指定的条件为真:语法while(condition){//要执行的代码块}在下面的示例中,只要变量(i)小于5,循环中的代码将......
  • 用while或for循环输出1-1000之间能被5整除的数,并且每行输出3个
    需求用while或for循环输出1-1000之间能被5整除的数,并且每行输出3个代码实现packagecom.jichu.struct;publicclassForDemo02{publicstaticvoidmain(String[]args){//用while或for循环输出1-1000之间能被5整除的数,并且每行输出3个的需求for(i......