代码之家  ›  专栏  ›  技术社区  ›  pate

预缓存根url(“/”)的正确方法

  •  2
  • pate  · 技术社区  · 6 年前

    我对预先设置根url的正确方法有点困惑,即“/”。

    如果我使用webpack plugin workbox来生成Prechemanifest,它不会包含“/”的条目。当然包括“/index.html”。现在,如果用户加载应用程序,预缓存开始生效,并且用户尝试在没有网络连接的情况下加载根url,则不会加载站点,因为预缓存对根url没有任何作用。如果用户尝试加载“/index.html”,一切都很好。但用户不加载该url,而是加载根url。那么如何缓存它呢?

    我应该使用 NavigateCallback:索引。html 在我的理解中,该选项在连接丢失和缓存丢失的情况下将用户重定向到提供的url?

    或者我应该使用 templatedUrls:{”/“:[“index.html”]} 选项,据我所知,该选项基于索引生成哈希。html,然后根据哈希值的更改缓存“/?

    或者我应该使用完全不同的策略?

    万分感谢!

    1 回复  |  直到 6 年前
        1
  •  4
  •   Jeff Posnick    6 年前

    默认情况下,当URL的初始预缓存未命中时 / ,Workbox将再次检查其预缓存文件列表,以查看是否存在以结尾的相同URL的匹配项 /index.html

    您可以阅读更多关于此的信息,以及如何自定义默认行为, in the module guide for workbox-precaching

    所以事情应该按照你描述的那样进行,而不需要做任何事情。(您需要确保在服务人员激活并控制当前窗口客户端之后进行测试。)

    如果你是 看到这种行为,听起来Workbox中可能有bug,最好在 issue tracker 提供更多详细信息。