美文网首页
浏览器application中cache storage及app

浏览器application中cache storage及app

作者: 汤吉柯德 | 来源:发表于2021-09-22 11:21 被阅读0次

1、前言

前端缓存分为HTTP缓存和浏览器缓存,浏览存储也有很多方法,比如使用localStorage、sessionStorage、cookie、indexDB等,本文就CacheStorage及application cache做简易介绍。

2、cache storage简介

很多小伙伴都应该了解localStorage、sessionStorage,但是却很少使用cacheStorage。cacheStorage也是浏览器存储的一种方式,它的主要用途是用于对请求的缓存

2.1、cache storage使用

CacheStorage在window使用时直接写成caches,其主要调用方法有:
open(cache):打开cache,没有的话自动创建该cache,返回一个promise,值为当前(创建)的cache

has(cache):匹配当前的cache对象,返回一个promise,有该cache则返回true,否则返回false

keys:返回一个promise,其值为当前所有caches,合并为一个数组

match(path):匹配路由请求(参数一般写成路径形式),对于检查给定的 Request 是否是 CacheStorage 对象跟踪的任何 Cache 对象的键,并返回一个resolve为该匹配的 Promise

put(path, new Response()):在cache中写入数据,第一个参数一般写成路径形式,第二个参数为Response实例

采用caches的api缓存远程获取的数据,如果本地已经缓存则使用本地缓存的数据


async function testCache{
    var cacheName = 'baidu'  // 定义cache名称
    var path = '/path'  // 定义路径

    var cachesMatch = await caches.match(path) // 匹配当前路径
    var cachesLocal = await caches.has(cacheName)

    //如果当前已有数据则直接获取缓存的数据
    if(cachesMatch && cachesLocal){
        caches.match(path).then(res => {
          return res.text()
        }).then(res => {
          console.log("获取cache数据: ", res)
        })
    }else{
      // 如果没有则获取远程数据
      getBaidu().then(res => {
        // 将请求的数据保存在caches中
        caches.open(cacheName).then(cache => {
          cache.put(path, new Response(JSON.stringify(res), { status: 200 }))          // 采用Json数据格式保存
        })
    })
    }
}

3、application cache的简介

application cache是前端应用级别的缓存,使用方式在html标签中添加mainfest属性

<html mainfest="myApplication.appcache">

属性值是自定义缓存的文件,在html同路径下创建文件myApplication.appcache,在其中编写内容:

CACHE MANIFEST
CACHE:
index.html
favicon.ico
NETWORK:
*
FAILBACK:

CACHE MANIFEST:本文件标识,在此标题下列出的文件将在首次下载后进行缓存
CACHE:在此标题下列出的文件将在首次下载后进行缓存,与CACHE MANIFEST功能类似
NETWORK:在此标题下列出的文件需要与服务器的连接,且不会被缓存
FALLBACK:在此标题下列出的文件规定当页面无法访问时的回退页面(比如 404 页面)

相关文章

网友评论

      本文标题:浏览器application中cache storage及app

      本文链接:https://www.haomeiwen.com/subject/jcwmvltx.html