关于现代浏览器的 back-and-forward 缓存机制
setUpLocationChangeListener:设置位置更改侦听器。 这个侦听器检测从路由器外部触发的导航(例如,浏览器后退/前进按钮)并安排相应的路由器导航,以便触发正确的 guard event.
Angular 路由文档里提到:
Had you clicked the browser’s back button instead of the application’s “Back” button, the application would have returned you to the heroes list as well. Angular application navigation updates the browser history as normal web navigation does.
如果单击浏览器的后退按钮而不是应用程序的后退
按钮,应用程序也会将我们返回到 hero list. Angular 应用程序导航会像普通 Web 导航一样更新浏览器历史记录。
据 Google 一份调查报告统计,移动设备上大约 20% 的页面访问是通过后退和前进按钮进行的。
在考虑用户应该如何体验后退或前进导航时,我们确实有一个理想的体验 - 基于特定移动平台的原生应用。 例如,Android 维护着一个 Activities
栈。 当用户导航到另一个页面时,该堆栈项目将关闭
。 返回时,只需将其重新打开
即可。 结果,该页面的状态以极其有效的方式显示给用户。
实际上,浏览器将为每个导航创建一个新 frame 。 无论是在同一个站点内进行跳转,还是跨域跳转,浏览器都会将页面冻结。 这包括拍摄页面快照以及其他元数据。 此外,该页面上的所有工作,包括任何延迟的任务,如 setTimeout 都将停止,直到通过 bfcache 再次到达该页面时才会恢复。 当用户使用后退或前进按钮导航回到堆栈中的某个项目时,浏览器会将它从 cache 中取下来,并呈现给用户而不刷新内容。 这包括所有可能处于变化中的输入元素状态。 换句话说,这是一种有状态浏览
。
在 SPA 即单页面应用里,当用户与浏览器的后退按钮交互时,并没有真正导航到新的 HTML 页面。 我们在 window.onpopstate 上与 history.pushState 和 history.replaceState 等 API 进行交互。
在 SPA 中使用后退和前进按钮的缺点是绘制 DOM 和从浏览器缓存中检索资源的成本。 如果文档非常大,即使从浏览器缓存中检索资源也可能代价高昂。 此外,保持以前的滚动位置可能非常棘手。 在 Ember.js 社区中,ember-router-scroll 已成为帮助 SPA 正确实现这一点的关键。 然而,它对于延迟加载的 DOM 元素和内容繁多的大型文档也很棘手。 当然,导航之前页面的冻结状态将有助于所有 SPA 恢复上次滚动的位置。 然而,这将需要不同的浏览器 API 来解决上面提出的一些问题。
相关文章
- Jgit的使用笔记
- 利用Github Action实现Tornadofx/JavaFx打包
- 叹息!GitHub Trending 即将成为历史!
- 微软软了?开源社区讨论炸锅,GitHub CEO 亲自来答
- GitHub Trending 列表频现重复项,前后端都没去重?
- Photoshop Elements 2021版本软件安装教程(mac+windows全版本都有)
- (ps全版本)Photoshop 2020的安装与破解教程(mac+windows全版本都有)
- (ps全版本)Photoshop cc2018的安装与破解教程(mac+windows全版本,包括2023
- 环境搭建:Oracle GoldenGate 大数据迁移到 Redshift/Flat file/Flume/Kafka测试流程
- 每个开发人员都要掌握的:最小 Linux 基础课
- 来撸羊毛了!Windows 环境下 Hexo 博客搭建,并部署到 GitHub Pages
- 超实用!手把手入门 MongoDB:这些坑点请一定远离
- 【GitHub日报】22-10-09 zustand、neovim、webtorrent、express 等4款App今日上新
- 【GitHub日报】22-10-10 brew、minio、vite、seaweedfs、dbeaver 等8款App今日上新
- 【GitHub日报】22-10-11 cobra、grafana、vue、ToolJet、redwood 等13款App今日上新
- Photoshop 2018 下载及安装教程(mac+windows全版本都有,包括最新的2023)
- Photoshop 2017 下载及安装教程(mac+windows全版本都有,包括最新的2023)
- Photoshop 2020 下载及安装教程(mac+windows全版本都有,包括最新的2023)
- Photoshop 2023 资源免费下载(mac+windows全版本都有,包括最新的2023)
- 最新版本Photoshop CC2018软件安装教程(mac+windows全版本都有,包括2023