JavaScript中的缓存API

Cache API允许服务工作者对要缓存的资源(HTML页面、CSS、JavaScript文件、图片、JSON等)进行控制。通过Cache API,服务工作者可以缓存资源以供脱机使用,并在以后检索它们。

Cache API允许服务工作者对要缓存的资源(HTML页面、CSS、JavaScript文件、图片、JSON等)进行控制。通过Cache API,服务工作者可以缓存资源以供脱机使用,并在以后检索它们。

了解如何使用JavaScript中的Cache API缓存资源。

JavaScript中的缓存API

Cache API允许服务工作者对要缓存的资源(HTML页面、CSS、JavaScript文件、图片、JSON等)进行控制。通过Cache API,服务工作者可以缓存资源以供脱机使用,并在以后检索它们。

检测Cache支持

检查 caches 对象在 window 中是否可用。

  1. letisCacheSupported='caches'inwindow;

caches 是 CacheStorage 的一个实例。

创建/初始化Cache

我们可以使用 open 方法创建一个具有 name 的缓存,这将返回 promise。如果缓存已经存在,则不会创建新的缓存。

  1. caches.open('cacheName').then(cache=>{
  2. });
  • 你不能访问为其他源(域)设置的缓存。
  • 你正在创建的缓存将为你的域创建。
  • 你可以为同一个域添加多个缓存,可以通过 caches.keys() 访问。

将项目添加到缓存

可以使用三种方法 add,addAll,set 来缓存资源。 add() 和 addAll() 方法自动获取资源并对其进行缓存,而在 set 方法中,我们将获取数据并设置缓存。

/ add /

  1. letcacheName='userSettings';
  2. leturl='/api/get/usersettings';
  3. caches.open(cacheName).then(cache=>{
  4. cache.add(url).then(()=>{
  5. console.log("Datacached")
  6. });
  7. });

在上面的代码中,内部对 /api/get/usersettings url的请求已发送到服务器,一旦接收到数据,响应将被缓存。

/ addAll /

addAll 接受URL数组,并在缓存所有资源时返回Promise。

  1. leturls=['/get/userSettings?userId=1','/get/userDetails'];
  2. caches.open(cacheName).then(cache=>{
  3. cache.addAll(urls).then(()=>{
  4. console.log("Datacached")
  5. });
  6. });

Cache.add/Cache.addAll 不缓存 Response.status 值不在200范围内的响应,Cache.put 可以让你存储任何请求/响应对。

/ put /

put 为当前的 Cache 对象添加一个key/value对,在 put 中,我们需要手动获取请求并设置值。

注意:put() 将覆盖先前存储在高速缓存中与请求匹配的任何键/值对。

从缓存中检索

使用 cache.match() 可以得到存储到URL的 Response。

  1. constcacheName='userSettings'
  2. consturl='/api/get/userSettings'
  3. caches.open(cacheName).then(cache=>{
  4. cache.match(url).then(settings=>{
  5. console.log(settings);
  6. }
  7. });

settings 是一个响应对象,它看起来像

  1. Response{
  2. body:(...),
  3. bodyUsed:false,
  4. headers:Headers,
  5. ok:true,
  6. status:200,
  7. statusText:"OK",
  8. type:"basic",
  9. url:"https://test.com/api/get/userSettings"
  10. }

检索缓存中的所有项目

cache 对象包含 keys 方法,这些方法将拥有当前缓存对象的所有url。

  1. caches.open(cacheName).then((cache)=>{
  2. cache.keys().then((arrayOfRequest)=>{
  3. console.log(arrayOfRequest);//[Request,Request]
  4. });
  5. });

arrayOfRequest是一个Request对象数组,其中包含有关请求的所有详细信息。

检索所有缓存

  1. caches.keys().then(keys=>{
  2. //keys是一个数组,其中包含键的列表
  3. })

从缓存中删除项目

可以对 cache 对象使用 delete 方法来删除特定的缓存请求。

  1. letcacheName=userSettings;
  2. leturlToDelete='/api/get/userSettings';
  3. caches.open(cacheName).then(cache=>{
  4. cache.delete(urlToDelete)
  5. })

完全删除缓存

  1. caches.delete(cacheName).then(()=>{
  2. console.log('Cachesuccessfullydeleted!');
  3. })

©本文为清一色官方代发,观点仅代表作者本人,与清一色无关。清一色对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。本文不作为投资理财建议,请读者仅作参考,并请自行承担全部责任。文中部分文字/图片/视频/音频等来源于网络,如侵犯到著作权人的权利,请与我们联系(微信/QQ:1074760229)。转载请注明出处:清一色财经

(0)
打赏 微信扫码打赏 微信扫码打赏 支付宝扫码打赏 支付宝扫码打赏
清一色的头像清一色管理团队
上一篇 2023年5月5日 11:50
下一篇 2023年5月5日 11:50

相关推荐

发表评论

登录后才能评论

联系我们

在线咨询:1643011589-QQbutton

手机:13798586780

QQ/微信:1074760229

QQ群:551893940

工作时间:工作日9:00-18:00,节假日休息

关注微信