0

Existe-t-il un moyen d'ignorer la chaîne de requête "? ScreenSize =" en dessous de la route enregistrée en utilisant la boîte de travail! Si je peux utiliser regex, comment pourrais-je l'écrire dans le scénario ci-dessous? Fondamentalement, je cherche à faire correspondre le cache, peu importe ce qui est la chaîne de requête screenSize.Comment ignorer la chaîne de requête url à partir des URL mises en cache lors de l'utilisation de la boîte de travail?

workboxSW.router.registerRoute('https://example.com/data/image?screenSize=980', 
workboxSW.strategies.cacheFirst({ 
    cacheName: 'mycache', 
    cacheExpiration: { 
     maxEntries: 50 
    }, 
    cacheableResponse: {statuses: [0, 200]} 
}) 
); 

Après avoir essayé le plugin cachedResponseWillBeUsed: Je ne vois pas le plug-in est appliqué: enter image description here

Répondre

1

Vous devriez être en mesure de le faire en écrivant un cachedResponseWillBeUsed plugin que vous passez lorsque vous configurez la stratégie:

// See https://workboxjs.org/reference-docs/latest/module-workbox-runtime-caching.RequestWrapper.html#.cachedResponseWillBeUsed 
const cachedResponseWillBeUsed = ({cache, request, cachedResponse}) => { 
    // If there's already a match against the request URL, return it. 
    if (cachedResponse) { 
    return cachedResponse; 
    } 

    // Otherwise, return a match for a specific URL: 
    const urlToMatch = 'https://example.com/data/generic/image.jpg'; 
    return caches.match(urlToMatch); 
}; 

const imageCachingStrategy = workboxSW.strategies.cacheFirst({ 
    cacheName: 'mycache', 
    cacheExpiration: { 
     maxEntries: 50 
    }, 
    cacheableResponse: {statuses: [0, 200]}, 
    plugins: [{cachedResponseWillBeUsed}] 
}); 


workboxSW.router.registerRoute(
    new RegExp('^https://example\.com/data/'), 
    imageCachingStrategy 
); 
+0

si l'URL est comme example.com/data/{id}/image?screenSize=980, est-il des possibilités de faire ce type de travail URL avec l'approche ci-dessus? – seUser

+0

J'ai mis à jour la réponse pour afficher l'utilisation d'une URL codée en dur comme clé de cache et pour rendre l'expression régulière plus générique. Je ne comprends pas vraiment comment la partie «{id}» de l'URL entre en jeu lors de la détermination de votre recherche de cache. Devrait-elle être prise en compte? Devrait-il être ignoré? -si vous deviez ajuster le code en fonction de cela. –

+0

Oui, j'ai une autre URL qui utilise l'ID dynamique, maintenant est-il possible de faire la même chose que ci-dessus pour ce type d'URL? Comme en utilisant 'ignoreSearch: true' – seUser