使用请求名称将数据保存在缓存中

时间:2018-11-26 03:38:34

标签: javascript caching fetch service-worker progressive-web-apps

在获取请求时与服务人员一起工作并更新动态缓存(如果我指出请求的名称)以这种方式保存它: / sites / MLM / search 但不保存答案,因为它没有数据。

这是API:https://api.mercadolibre.com/sites/MLM/search?nickname=JBL.MX

这是提取:

 resFetch =  apiFetch( CACHE_DYNAMIC_NAME, e.request);

调用更新动态缓存的功能

function apiFetch( cacheName, request ) {

    return fetch( request ) 
        .then( res => {
            if( res.ok ) { 
                updateDynamicCache( cacheName, request, res.clone() ); 
                return res.clone(); 
            } else {
                return cache.match( request );
            }
        })
}

这是更新动态缓存的功能

function updateDynamicCache( dynamicCache, req, response ){

    console.log(req)

    if( response.ok ){ 
        return caches.open( dynamicCache ).then( cache => { 
            cache.put( req, response.clone() );
            return response.clone(); 
        })
    } else {
        return response; 
    }
}

但是,如果我不是将请求传递给cache.put,而是传递一个随机名称,它将使用该随机名称和数据来缓存密钥,而不会出现问题:

function updateDynamicCache( dynamicCache, req, response ){

    console.log(req)

    if( response.ok ){ 
        return caches.open( dynamicCache ).then( cache => { 
            cache.put( 'random-name', response.clone() );
            return response.clone(); 
        })
    } else {
        return response; 
    }
}

有人知道如何解决吗?

0 个答案:

没有答案