-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
spa首屏优化的思考 #38
Comments
App shell生成相关
webpack插件
pwa应用构建工具preload和prefetchpreload 是声明式的 fetch,可以强制浏览器请求资源,同时不阻塞文档 onload 事件 prefetch 提示浏览器这个资源将来可能需要,但是把决定是否和什么时间加载这个资源的决定权交给浏览器 对于当前页面很有必要的资源使用 preload,对于可能在将来的页面中使用的资源使用 prefetch
|
目前有2种实现方案第一种,相对已有项目去改动是合适的
当然,也可以自己手动写 延伸阅读: 第二种,使用类似 |
app shell实践结果
用后,瞬间觉得索然无味~它和loading的作用一致的,好处在于提供了了一个骨架页面,但如果结合工具将其自动化后还是可以一用的。 如果加了js逻辑、或重绘,这就没有必要了。 pwa实践结果
我看了下iOS微信的webview也是不支持的,似乎很多应用的webview都是采用的WKWebView,那在实际的业务应用中,场景就很小了。 |
利用ssr结合pwa,将
app shell
缓存在本地由于做了
code-spliting
,需要收集路由依赖,将对应的jspreload
或prefetch
app-shell
为webpack打包时,将依赖的js收集起来,生成新的service-worker.js
,cache到本地,另外在需要显示的页面,利用组件的空状态先将app-shell
渲染出来,再在下个eventloop
的时候new Vue
关于本地缓存的更新,由于生成了新的
service-worker.js
,里面cachelist的文件也是由webpack打包带hash的,所以delete掉不在cachelist的文件即可以上处理完带hash的js,都会在打包时插入到html中
另外,如果非ssr怎么办?
首先,
app shell
不可能手动开发,它可能只存在与首页路由里html是可以被cache的,因为只要
service-worker.js
会更新就不会有问题那么,我们可以这样做
app shell
可以用工具生成,然后插入到html中,是否显示需要根据当前路由来判断app shell
的依赖及其它不常更新的文件一张流程图
延伸阅读:
The text was updated successfully, but these errors were encountered: