我想服务工作者缓存来自我的cdn的文件? 如果文件在我的根域下,一切都没问题,否则我总会得到错误,例如"跨越原始域..."。
我的所有静态资源都在cdn上,我应该如何处理缓存这些文件?
我在AMP中的代码
<amp-install-serviceworker src="https://www.example.com/swAmp.js" layout="nodisplay"></amp-install-serviceworker>
我的服务人员swAmp.js
var CACHE_NAME = 'example-v0';
var urls = [
'https://static.example.com/img/menu/1.png',
'https://static.example.com/img/menu/2.png',
'https://static.example.com/img/menu/3.png'
];
self.addEventListener('install', function(event) {
event.waitUntil(
caches.open(CACHE_NAME)
.then(function(cache) {
console.log('Opened cache');
return cache.addAll(urls);
})
);
});
所有样本均基于当地资源:(
以后如何为他们服务? 完整的样本将非常有用,thx。
答案 0 :(得分:2)
我找到了一个在本文中有效的答案 https://filipbech.github.io/2017/02/service-worker-and-caching-from-other-origins
self.addEventListener('install', function(event) {
event.waitUntil(
caches.open(CACHE)
.then(function(cache) {
console.log('Opened cache');
urls.forEach(function(value) {
const request = new Request(value, {mode: 'no-cors'});
fetch(request).then(response => cache.put(request, response));
});
return cache;
})
);
});