Javascript 推特与x27之间的导航是什么;什么页面这么快?

Javascript 推特与x27之间的导航是什么;什么页面这么快?,javascript,ajax,twitter,navigation,Javascript,Ajax,Twitter,Navigation,前几天我在推特上,打开chrome devtools进入网络控制台,然后点击推特上的链接(特别是菜单栏上写着“我”的链接),然后,像往常一样,页面没有再次加载,看起来像是AJAX化了,但后来我查看了网络内容,我看到的只是一些图片和一些javascript文件 除非Twitter在加载主页时从“我”页面加载内容(我对此深表怀疑,因为Twitter的加载速度也相当快),否则是什么让Twitter页面之间的导航如此之快?与所有JS应用程序一样,您看到的页面只是“视图”。您在同一个页面上,通过AJAX加

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


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

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

这里有一个场景:当你打开一个干净的浏览器并进入Twitter的时间线时,一切都会加载。这还包括呈现后续页面所需的所有脚本

现在,当你转到另一个页面,比如“我”,Twitter还没有该页面的资源。因此,它通过AJAX加载所需的资源,以像所有数据一样呈现“我”页面,并为其加载模板。加载后,它呈现数据并与模板一起形成“我”页面

现在,当您回到时间线时,Twitter从未丢弃时间线数据,而是缓存它(充其量是本地存储)因此,返回时间轴(或任何访问过的页面)只是读取缓存数据、缓存模板并将视图重新提交到页面上的问题。根本不需要网络请求。

正如您还注意到的,通过从服务器查询新的tweet,而不是将它们全部取回,以增量方式检索新数据。只有当页面确定它需要一组新的数据时,它才会查询一组数据


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

看不到这一点。单击Me链接将触发
GET
请求
https://twitter.com/myUsername
返回JSON payloadCheck再次检查控制台,特别是选择网络选项卡的XHR子选项卡。当我将页面从“主页”更改为“我”页面时,我看到一个AJAX请求,它提供了我最近的所有推文和一些其他数据:特别是,除了好的旧AJAX之外,Twitter正在使用,它允许它以几个月前不可能的方式通过JavaScript更改URL。