Caching 盖茨比形象堂';t在iPad上按需缓存

Caching 盖茨比形象堂';t在iPad上按需缓存,caching,gatsby,gatsby-image,Caching,Gatsby,Gatsby Image,我有一个用盖茨比制作的幻灯片。(实际上是真实事物的轻量、无商标版本)。我还主持了构建 重新编程的步骤: 打开电脑,最好用iPad 将PWA添加到主屏幕 通过主屏幕图标打开PWA;打开后不要碰任何东西 转到ioPad设置并禁用WiFi/互联网 返回应用程序并浏览幻灯片 请注意,幻灯片图像未加载(我们只看到黑色背景) 连接到WiFi时,图像将正常加载。此外,如果您在关闭WiFi之前打开幻灯片,即使应用程序关闭然后重新打开,幻灯片也会缓存并保持可用 期望的行为: 一旦应用程序打开,幻灯片中包含的所有图

我有一个用盖茨比制作的幻灯片。(实际上是真实事物的轻量、无商标版本)。我还主持了构建

重新编程的步骤

  • 打开电脑,最好用iPad
  • 将PWA添加到主屏幕
  • 通过主屏幕图标打开PWA;打开后不要碰任何东西
  • 转到ioPad设置并禁用WiFi/互联网
  • 返回应用程序并浏览幻灯片
  • 请注意,幻灯片图像未加载(我们只看到黑色背景)
  • 连接到WiFi时,图像将正常加载。此外,如果您在关闭WiFi之前打开幻灯片,即使应用程序关闭然后重新打开,幻灯片也会缓存并保持可用

    期望的行为: 一旦应用程序打开,幻灯片中包含的所有图像都将被缓存并准备好使用,而无需打开幻灯片。此应用程序旨在用于无法使用WiFi的环境中。我不想让人们一张接一张地打开所有的幻灯片,以确保在使用前缓存图像

    尝试过的内容

  • 一次生成所有图像:

    // src/pages/index.js, line 156 :
    <div id="offline">
        {data.slides.edges.map((s) => {
            return s.node.frontmatter.gallery.map((i, key) => <img src={i} alt="" key={"cache-"+key} />)
        })}
    </div>
    
    //src/pages/index.js,第156行:
    {data.slides.edges.map((s)=>{
    返回s.node.frontmatter.gallery.map((i,key)=>)
    })}
    
    其基本原理是,只要生成一次,它们就会立即被缓存并脱机工作

  • 将头缓存控件放置为:public,最大年龄=31536000;据说它创建了一个“侵略性”缓存策略

  • 用于每个幻灯片图像
  • 尝试了普通标记和盖茨比图像标记,希望后者能够提供自己的缓存策略覆盖
  • 在文档中搜索和;我不觉得我遗漏了什么
  • “真正”的应用程序大约有45MB大,所以很紧凑,但我觉得它应该能够在iPad上正确缓存。我不知道我错过了什么;在我看来,PWA的第一大优势是能够(合理地)离线工作。我还能做些什么来确保在不打开所有幻灯片的情况下缓存图像(在真正的应用程序中有很多)


    非常感谢

    我从Reddit上的一个陌生人那里得到了答案,我在那里发布了相同的问题

    在我的盖茨比配置中,我设置了以下选项:

    {
        resolve: gatsby-plugin-offline,
        options: {
            globPatterns: ['**/*.{js,jpg,png,html,css}']
        }
    },
    
    但显然我需要将globPatterns放在workboxConfig对象中:

    {
        resolve: `gatsby-plugin-offline`,
        options: {
            workboxConfig: {
                globPatterns: ['**/*.{js,jpg,png,html,css}'],
            },
        }
    },
    
    真不敢相信,我花了近3天的时间来回浏览整个应用程序和服务器配置

    感谢所有花时间思考我问题的人,哪怕是一点点