微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 workbox-build generateSW 向缓存添加过期时间?

如何解决如何使用 workbox-build generateSW 向缓存添加过期时间?

我使用 workBox generateSW 方法生成 service worker,这是我使用的配置:

onMouseDown(evt) {
    this.owner.toolActionBegin()
    this.isMouseDown = true
    this.startPt = this.canvas.getPointer(evt.e);

    this.object = new fabric.IText("New text",{
        left: this.startPt.x,top: this.startPt.y,fill: this.owner.textColor,selectable: true,fontFamily: 'arial',fontSize: this.owner.fontSize,editable: true,selectionBackgroundColor: "rgb(255,255,255)",perPixelTargetFind: false,hasBorders: true,hasControls: true,});

    
      this.object.setControlsVisibility({
        tl: true,tr: true,br: true,bl: true,ml: false,mt: false,mr: false,mb: false,mtr: true
      })

    this.canvas.add(this.object)
    this.canvas.on("mouse:up",this.onmouseup);
    this.canvas.on("editing:exited",this.onExitEditing);
  }

我在文档中找不到删除旧缓存的过期时间,那么我如何在一段时间后使用 workBox-build generateSW 清理缓存?

解决方法

maxAgeSeconds 并不意味着在一段时间后自动清理旧条目。来自documentation

插件会在每次请求或缓存更新后检查并删除条目。

需要注意的一点:

  • 因为打开IndexedDB很慢,所以在请求被使用后才会过期。这意味着过期的请求可以使用一次,但之后就会过期。
  • 为了缓解这种情况,插件将检查缓存响应的“日期”标头,如果存在并且可以解析日期,它将基于此过期,因为它不需要 IndexedDB 查找。立>

所以 maxAgeSeconds 是控制缓存请求失效前的时间的选项,旧条目的删除由请求触发。

要在任何请求后检查和删除旧条目,请使用 maxEntries option

在使用缓存响应或将新请求添加到缓存后,插件将查看配置的缓存并确保缓存条目的数量不超过限制。如果是这样,最旧的条目将被删除

如果您仍然需要在任何请求后根据时间而不是条目数进行清理,您需要基于 ExpirationPlugin 创建自己的插件并更好地使用注入清单模式。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?