浏览网站的人通常会经历以下过程:查看页面、点击链接、浏览器加载新页面。 当然,这并不包括单页应用程序之类的特殊情况,尽管单页应用程序遵循相同的过程,但浏览器不会加载新页面——客户端为了更快的转换而对其进行了伪造。
如果可以在用户点击链接之前加载新页面,这样当他们点击链接时,加载下一个页面会快很多,怎么办? 有两个著名的项目试图帮助解决这个问题
- quicklink:检测可见链接,等待浏览器空闲,如果连接速度不慢,则预取这些链接。
- instant.page:如果您将鼠标悬停在链接上 65 毫秒,它将预加载该链接。 新的版本 2 允许您配置时间延迟,或是在预加载之前等待点击或按下。
将这些与 保留绘制 等技术改进结合起来,仅仅为了速度优势而构建 SPA 架构可能变得没有必要(尽管它可能由于其他原因仍然很理想,例如代码拆分、将路由的责任放在前端开发人员身上等等)。
这是一个好主意。
但除此之外,我还会监控用户的正常行为,并根据一些条件预加载那些点击率高的页面。
https://guess-js.github.io/docs 这可能会有所帮助吗?
这真的很实用。 我会看看 insta.page,看看它是否可以很好地集成到简单的静态网站中。
那么,菜单中有很多链接的大型网站怎么办? 这是否会加载整个网站,这是我们希望用户做的事情吗? 对于小页面来说可能很酷,但对于整个网站来说就不行了
对于 WordPress,请查看 Tada - 它使用 intant.page — https://wordpress.org/plugins/tada/ 在大多数主题中开箱即用,效果很好。
我个人使用过 swup.js,效果非常好。 如果有兴趣,您可以在这里查看 http://samenvattingen.woutermissler.nl
这篇文章发布得太及时了,四天前,我搜索过类似于 instantClick 和其他解决方案,要么库无法使用,要么不能完美运行。 我会试试这些...非常感谢。
这两句话让我有点惊讶。 通常,每当我看到 SPA 重新设计时,它总是明显更滞后,更卡顿。 我以为 SPA 技术更多地是为了开发人员的方便,而用户端的性能更多的是一种愿意做出的牺牲。 毕竟,要提供大量的 JavaScript 代码,然后它实际上会占用主线程,进行很多 CPU 密集型操作。 非常好奇,这怎么会比传统的服务器端渲染技术更快。
将这些技术与现有的 SPA 架构结合起来,预取下一个路由的数据,并实现真正的即时转换,会很有趣。
预加载页面会导致 Google Analytics 出现问题吗?
让我想起了亚马逊,在您实际购买之前,他们就会准备发货,以及购物车中的商品。
我目前使用 Flying Pages (https://wordpress.org/plugins/flying-pages/),非常喜欢它。
同意 Ryan 的观点。 Flying Pages (https://github.com/gijo-varghese/flying-pages) 具有 Quicklink 和 Instant.page 的功能。 如果您的视窗中有太多链接,Flying pages 会在服务器繁忙时停止预加载,并且每秒只预加载几个请求。 到目前为止,它在静态网站和 WordPress 网站上运行良好
Gatsby 已经做到了! 当用户将鼠标悬停在任何(内部)链接上时,它会预取新页面,提供良好的用户体验。
您可以在 Gatsby 网站 (https://www.gatsbyjs.org/) 上试用它 - 在开发人员工具中打开“网络”选项卡,并将鼠标悬停在任何链接上即可查看其运行效果。