PWA也应该是SPA吗?

Dan*_*tos 4 progressive-web-apps

我想知道因为我的应用确实有一个与应用程序的行为完全不同的初始旅程.

我想将这个初始旅程分成不同的"HTML",因为数据传输和加载时间.甚至使用与应用程序其余部分相同的框架(Angular2).

但这样的应用程序不再是SPA了.

这是否会损害"连接独立""类似App"的 PWA原则?

OBS.我们正在尝试这个,因为我们的研究表明用户参与度和初始游览加载时间的速度之间存在直接关系.

Jef*_*ick 10

遵循Web应用程序的单页应用程序模式意味着您将使用App Shell方法顺利过渡到渐进式Web应用程序中的导航缓存优先级.

遵循App Shell模式并不是构建渐进式Web应用程序的唯一方法,但如果采用不同的方法,则需要更多地考虑如何缓存HTML,并且可能更难以使用服务工作者以缓存优先的方式响应导航.其中一些注意事项在此" 高性能服务工作者加载 "文章中进行了概述.

如果您的Web应用程序当前是SPA的混合体以及一些静态页面,那么您可以通过检查传入的URL来响应服务工作者中的导航请求时将其考虑在内.假设有一个众所周知的前缀或其他方式来识别给定的URL是否与Web应用程序的SPA部分或基本HTML部分相对应,您可以在fetch处理程序内做出不同的响应:

// Not shown: install and activate handlers to keep app-shell.html
// cached and up to date.
self.addEventListener('fetch', event => {
  if (event.request.mode === 'navigate' && event.request.url.includes('/spa'))
    event.respondWith(caches.match('app-shell.html'));
    return;
  }
  // Either do nothing, and your non-/spa URLs will go against the network,
  // or use a runtime caching strategy to handle your non-/spa URLs.
});
Run Code Online (Sandbox Code Playgroud)

更新于2018-06-21:有关其他视角,您可以阅读" 超越SPA:您的PWA的替代架构 "