javascript - 是什么让 Twitter 页面之间的导航如此之快?

标签 javascript ajax twitter navigation

前几天我在 Twitter 上,打开 chrome devtools 并进入网络控制台,然后单击 Twitter 上的一个链接(特别是菜单栏上写着“我”的链接),然后像往常一样,页面并没有真正再次加载,它似乎是 AJAX 化的,但后来我查看了网络内容,我看到的只是一些图像和一些 javascript 文件。

除非 Twitter 在加载主页时从“我”页面加载内容(我对此非常怀疑,因为 Twitter 的加载速度也相当快),否则什么能让 Twitter 页面之间的导航如此之快?

最佳答案

像所有 JS 应用程序一样,您看到的页面只是“ View ”。您位于同一页面上,内容通过 AJAX 加载,然后 JS 使用模板呈现数据以形成该 View 。

这是一个场景:当您打开一个干净的浏览器并转到 Twitter 的时间线时,所有内容都会加载。这还包括呈现后续页面所需的所有脚本。

现在,当您转到另一个页面(例如“我”)时,Twitter 还没有该页面的资源。因此,它通过 AJAX 加载呈现“Me”页面(如所有数据)所需的资源及其模板。加载后,渲染数据并与模板一起形成“我”页面。

现在,当您返回时间线时,Twitter 不会丢弃时间线数据,而是将其缓存(最多是本地存储)。 因此,返回时间线(或任何访问过的页面)只需读取缓存数据、缓存模板并将 View 重新渲染到页面上即可。根本不需要网络请求。

您还注意到,新数据是通过从服务器查询新推文而不是全部取回来增量检索的。只有当页面确定需要一组新数据时,它才会查询其中的一堆数据。

此外,JSON 数据比加载普通页面轻一百万倍(夸张地说)。

关于javascript - 是什么让 Twitter 页面之间的导航如此之快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14545302/

相关文章:

javascript - ASP.Net,合并自动完成

python - Python 中的 DynamoDB 查询(使用 GroupBy 进行计数)

javascript - 尽管发布推文有效,但从我的 Twitter 帐户获取推文不起作用

ios - Twitter API 如何知道一个用户是否关注另一个用户?

javascript - 在 C++ 的 JScript 中调用 instanceof 运算符 (IDispatch/IDispatchEx)

javascript - 一秒钟后用 Javascript 更改 CSS

javascript - KnockoutJs 中 UI 刷新后是否有回调?

javascript - 如何判断 readStream 是否没有更多行可读?

javascript - 三维数组上的 Dijkstra 算法

javascript - 为什么用自定义指令替换 ng-select 会导致 $http 请求不会每隔一段时间发送一次