Невозможно обслуживать ресурсы AWS S3 из кэша - работник службы - PullRequest
0 голосов
/ 28 ноября 2018

Я пытаюсь кэшировать следующие 2 ресурса с помощью сервисного работника

<link href="https://s3.xxxxx.amazonaws.com/xxbucketxx/example.css" rel="stylesheet" crossorigin="anonymous">
<script src="https://unpkg.com/vue/dist/vue.min.js" crossorigin="anonymous"></script>

Первый ресурс из aws s3.

После регистрации работника службы при проверке с использованием браузера Chrome оба файла присутствуют в кэш-хранилище.

Чтобы проверить, обслуживаются ли ресурсы из кэша в следующем запросе после работника службызарегистрирован, я использую следующий код:

self.addEventListener("fetch", function(event) {
    event.respondWith(
        caches.match(event.request).then(function(response) {
            if(response != undefined){
                return response
            }
            else{
                console.log("Fetching outside cache", event.request.url)
                if(event.request.url.includes("?cache=true")){
                    caches.open("my-cache").then(function(cache){
                        cache.add(event.request.url);
                    })
                }
                return fetch(event.request)
            }
        })
    );
});

Ресурс vue js обслуживается из кэша сервисным работником.Но ресурс s3 снова выбирается из s3.Я также дал следующую политику CORS для корзины s3.

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>GET</AllowedMethod>
    <AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>

1 Ответ

0 голосов
/ 28 ноября 2018

Аналогично Работник службы не возвращает файл из кэша

self.addEventListener("fetch", function(event) {
    event.respondWith(
        caches.match(event.request,{cacheName:"my-cache",ignoreVary:true}).then(function(response) {
            if(response != undefined){
                return response
            }
            else{
                console.log("Fetching outside cache", event.request.url)
                if(event.request.url.includes("?cache=true")){
                    caches.open("my-cache").then(function(cache){
                        cache.add(event.request.url);
                    })
                }
                return fetch(event.request)
            }
        })
    );
});

Попробуйте это.

...