1

我只是想知道 facebook 如何管理对“我的个人资料页面”和“主页”以及其他一些似乎只重新加载一些内容的页面的请求。

例如,当我在 facebook 上的“我的个人资料页面”上时,我点击主页按钮,顶部栏按钮和右侧的聊天面板保持不变(它们没有重新加载)。我在 webkit 控制台中监控了 XMLHTTPRequest 并且没有生成 ajax,所以它不是 Ajax(我认为)。否则,如果单击这些链接时生成了 FULL http 请求,我认为必须重新加载整个页面,对吗?所以我不知道这是如何处理的。你能帮我一把吗?

谢谢 :)

4

1 回答 1

0

这是一种称为“quickling”的性能优化,他们还使用“pagecache”策略来减少来自服务器的数据。在底层,它依赖于 javascript 作为 LinkController 执行,它委托一个超链接点击事件,然后发送一个 ajax(或使用 iframe)向服务器请求 pagelet 数据,响应将是一个 json 格式的数据结构, 然后 javascript 将插入当前页面的内容。你地址栏中的uri可以处理旧浏览器中的hash change事件和H5的History API(pushState)来管理浏览器的历史记录。

于 2016-06-06T09:21:10.990 回答