feat(service-worker): include CacheQueryOptions
options in ngsw-config (#34663)
Previously it was not possible to provide `CacheQueryOptions` ([MDN](https://developer.mozilla.org/en-US/docs/Web/API/Cache)) for querying the Cache. This commit introduces a new parameter called `cacheQueryOptions` for `DataGroup` and `AssetGroup`. Currently only `ignoreSearch` is supported as `ignoreVary` and `ignoreMethod` would require using the complete Request object for matching which is not possible with the current implementation. Closes #28443 PR Close #34663
This commit is contained in:

committed by
Alex Rickabaugh

parent
49be32c931
commit
dc9f4b994e
@ -69,6 +69,7 @@ export class Generator {
|
||||
name: group.name,
|
||||
installMode: group.installMode || 'prefetch',
|
||||
updateMode: group.updateMode || group.installMode || 'prefetch',
|
||||
cacheQueryOptions: buildCacheQueryOptions(group.cacheQueryOptions),
|
||||
urls: matchedFiles.map(url => joinUrls(this.baseHref, url)),
|
||||
patterns: (group.resources.urls || []).map(url => urlToRegex(url, this.baseHref, true)),
|
||||
};
|
||||
@ -84,6 +85,7 @@ export class Generator {
|
||||
maxSize: group.cacheConfig.maxSize,
|
||||
maxAge: parseDurationToMs(group.cacheConfig.maxAge),
|
||||
timeoutMs: group.cacheConfig.timeout && parseDurationToMs(group.cacheConfig.timeout),
|
||||
cacheQueryOptions: buildCacheQueryOptions(group.cacheQueryOptions),
|
||||
version: group.version !== undefined ? group.version : 1,
|
||||
};
|
||||
});
|
||||
@ -149,3 +151,8 @@ function withOrderedKeys<T extends {[key: string]: any}>(unorderedObj: T): T {
|
||||
Object.keys(unorderedObj).sort().forEach(key => orderedObj[key] = unorderedObj[key]);
|
||||
return orderedObj as T;
|
||||
}
|
||||
|
||||
function buildCacheQueryOptions(inOptions?: Pick<CacheQueryOptions, 'ignoreSearch'>):
|
||||
CacheQueryOptions|undefined {
|
||||
return inOptions;
|
||||
}
|
||||
|
@ -39,6 +39,7 @@ export interface AssetGroup {
|
||||
installMode?: 'prefetch'|'lazy';
|
||||
updateMode?: 'prefetch'|'lazy';
|
||||
resources: {files?: Glob[]; urls?: Glob[];};
|
||||
cacheQueryOptions?: Pick<CacheQueryOptions, 'ignoreSearch'>;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -55,4 +56,5 @@ export interface DataGroup {
|
||||
timeout?: Duration;
|
||||
strategy?: 'freshness' | 'performance';
|
||||
};
|
||||
cacheQueryOptions?: Pick<CacheQueryOptions, 'ignoreSearch'>;
|
||||
}
|
||||
|
Reference in New Issue
Block a user