无法从Safari中的缓存中删除文件

时间:2018-05-22 04:43:07

标签: angular caching safari cacheapi

在Angular 6应用程序中,我使用Cache API来存储和删除MP3文件。

在Safari中,当尝试删除文件时,它不会被删除,而且我会收到一个" Quota Exceeded"错误消息(在Chrome中效果很好)。

我创建了一个Example Angular Firebase App,以便您可以看到问题。

Example App code repository

重现问题的步骤:

  1. 打开Safari(手机或Mac电脑)
  2. 点击"保存文件"按钮
  3. 点击"删除文件" (该文件应该删除,但不是)
  4. 点击"保存文件"再次,你将获得" Quota Exceeded"消息。
  5. 任何人都可以帮我看看我的代码有什么问题吗?

    我调用删除文件的方法是 removeFile()

    app.component.ts

    import { Component, OnInit } from '@angular/core';
    import { DomSanitizer } from '@angular/platform-browser';
    
    @Component({
      selector: 'app-root',
      templateUrl: './app.component.html',
      styleUrls: ['./app.component.css']
    })
    export class AppComponent implements OnInit {
    
      // Omitted ...
    
      saveFile() {
        this.resetValues();  
        caches.open(this.id).then((cache) => {
          console.log("open complete", cache);
          return fetch(this.url).then((response) => {
            console.log("fetch complete", response);
            return cache.put(this.url, response).then((data) => {
              console.log("cache complete", data)
              this.status = 'File saved';
            });
          })
        }).catch((error: Error) => {
          this.errorMessage = error.message;
          console.error('Error caching file!', error);
        });
      }
    
      removeFile() {
        this.resetValues();
        caches.delete(this.id).then((cacheDeleted) => {
          console.log("File removed from cache:", cacheDeleted);
          this.status = 'File removed';
        }).catch((error: Error) => {
          this.errorMessage = error.message;
          console.error('Error removing file from cache :(', error);
        });
      }
    
    }
    

    的package.json

    {
      // Omitted ...
      "dependencies": {
        "@angular/animations": "^6.0.0",
        "@angular/common": "^6.0.0",
        "@angular/compiler": "^6.0.0",
        "@angular/core": "^6.0.0",
        "@angular/forms": "^6.0.0",
        "@angular/http": "^6.0.0",
        "@angular/platform-browser": "^6.0.0",
        "@angular/platform-browser-dynamic": "^6.0.0",
        "@angular/router": "^6.0.0",
        "core-js": "^2.5.4",
        "rxjs": "^6.0.0",
        "zone.js": "^0.8.26"
      },
      "devDependencies": {
        "@angular/compiler-cli": "^6.0.0",
        "@angular-devkit/build-angular": "~0.6.1",
        "typescript": "~2.7.2",
        "@angular/cli": "~6.0.1",
        "@angular/language-service": "^6.0.0",
        // Omitted ...
      }
    }
    

0 个答案:

没有答案